Leetocde_242_Valid Anagram
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/48979767
Given two strings s and t, write a function to determine if t is an anagram of s.
For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.
思路:
(1)题意为给定两个字符串,要求判定其中的一个字符串能否通过移位得到另一个字符串。
(2)该题考察的是两个字符串组成的字符是否完全一致。下面给出了三种不同的解题方法,方法一:将两个字符串转为字符数组,通过Arrays.sort()方法对字符数组进行排序,然后判断两字符数组组成的字符串是否完全一致来得到答案;方法二:借用map来保存其中一个字符串中的字符及其个数,然后遍历另一个字符串对应的字符数组,判定遍历到的字符是否存在map中,若不存在返回false,若存在,则当前字符在map中的值减1,遍历完即得到结果;方法三:借用一个整形数组来实现,该方法效率最好,且容易理解。由于a~Z对应的ASCII码值小于256,即创建一个256大小的数组即可,将其中一个字符串对应的字符存入数组中,数组下标为字符对应的ASCII码值,对应的值为当前字符的个数,然后遍历另一个字符串对应的字符数组,判断遍历得到的字符在整形数组中的值是否为0,若为0则返回false,否则将该字符对应的值减1,遍历完即得结果。
(3)详情见下方代码。希望本文对你有所帮助。
算法代码实现如下:
package leetcode;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author liqqc
*
*/
public class Valid_Anagram {
// use api method
public static boolean isAnagram(String s, String t) {
if (s == null || t == null)
return false;
if (s.trim().equals(t.trim()))
return true;
if (s.length() != t.length())
return false;
char[] charArray = s.toCharArray();
char[] charArray2 = t.toCharArray();
Arrays.sort(charArray);
Arrays.sort(charArray2);
return new String(charArray).equals(new String(charArray2));
}
// use map
public static boolean isAnagram2(String s, String t) {
if (s == null || t == null)
return false;
if (s.trim().equals(t.trim()))
return true;
if (s.length() != t.length())
return false;
char[] charArray = s.toCharArray();
char[] charArray2 = t.toCharArray();
Map<Character, Integer> map = new HashMap<Character, Integer>();
for (Character c : charArray) {
if (!map.containsKey(c)) {
map.put(c, 1);
} else {
map.put(c, map.get(c) + 1);
}
}
for (Character c : charArray2) {
if (!map.containsKey(c)) {
return false;
} else {
if (map.get(c) <= 0) {
return false;
} else {
map.put(c, map.get(c) - 1);
}
}
}
return true;
}
// use array
public static boolean isAnagram3(String s, String t) {
if (s == null || t == null)
return false;
if (s.length() != t.length())
return false;
int[] arr = new int[256];
for (char c : s.toCharArray()) {
if (arr[c] == 0) {
arr[c] = 1;
} else {
arr[c] = arr[c] + 1;
}
}
for (char c : t.toCharArray()) {
if (arr[c] == 0) {
return false;
} else {
arr[c] = arr[c] - 1;
}
}
return true;
}
}
Leetocde_242_Valid Anagram的更多相关文章
- [LeetCode] Valid Anagram 验证变位词
Given two strings s and t, write a function to determine if t is an anagram of s. For example, s = & ...
- Leetcode Valid Anagram
Given two strings s and t, write a function to determine if t is an anagram of s. For example,s = &q ...
- LeetCode 242 Valid Anagram
Problem: Given two strings s and t, write a function to determine if t is an anagram of s. For examp ...
- 【09_242】Valid Anagram
Valid Anagram My Submissions Question Total Accepted: 43694 Total Submissions: 111615 Difficulty: Ea ...
- 【leetcode❤python】242. Valid Anagram
class Solution(object): def isAnagram(self, s, t): if sorted(list(s.lower()))==sorted(list ...
- 242. Valid Anagram
Given two strings s and t, write a function to determine if t is an anagram of s. For example,s = &q ...
- (easy)LeetCode 242.Valid Anagram
Given two strings s and t, write a function to determine if t is an anagram of s. For example,s = &q ...
- 【LeetCode】242 - Valid Anagram
Given two strings s and t, write a function to determine if t is an anagram of s. For example,s = &q ...
- Java [Leetcode 242]Valid Anagram
题目描述: Given two strings s and t, write a function to determine if t is an anagram of s. For example, ...
随机推荐
- ACE在Linux下编译安装
下载地址: http://download.dre.vanderbilt.edu/ ACE版本:ACE-6.2.2.tar.bz2 下载完成后解压路径为:/root/ACE/ACE_wrappers ...
- CSDN帐号被封
感慨
- NET中小型企业级项目开发架构系列(一)
前端时间我们开发了基于Net的一套搭建sprint.NET+NHibernate+MVC+WCF+EasyUI等中小型企业级系统开发平台,现在把整个开发过程中的步步进展整理出来和大家分享,这个系列可能 ...
- (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 前一篇博文介绍了物理对象中小球与砖块的碰撞处理,在这一篇中我们再 ...
- 如何在Cocos2D 1.0 中掩饰一个精灵(四)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 为了完成需要的效果,我们将使用如下策略: 我们将首先绘制掩饰精灵 ...
- [Error]Can't install RMagick 2.13.4. You must have ImageMagick 6.4.9 or later.
gem 安装ruby插件的时候 出现了一个错误 Installing rmagick 2.13.4 with native extensions Gem::Installer::ExtensionBu ...
- Activity, Service,Task, Process and Thread之间的关系
Activity, Service,Task, Process and Thread之间到底是什么关系呢? 首先我们来看下Task的定义,Google是这样定义Task的:a task is what ...
- UNIX环境高级编程——计算机体系结构基础知识
无论是在CPU外部接总线的设备还是在CPU内部接总线的设备都有各自的地址范围,都可以像访问内存一样访问,很多体系结构(比如ARM)采用这种方式操作设备,称为等都会产生异常. 通常操作系统把虚拟地址空间 ...
- 《java入门第一季》之tcp协议下的网络编程c/s实现通信交互
需求:客户端向服务器发送数据,服务器端收到数据后向客户端返回数据: 还是使用两台电脑,一台客户端,一台服务器. 客户端代码: import java.io.IOException; import ja ...
- flex 强制转换类型失败无法将object转换为XXX
错误描述 flex在加载module时报出如题所示的错误, 实际表现 问题就出现在这 我取消这个错误提示框 再次在前台查询数据 就一切ok 问题就出现在这一句 var zoufangModel:ZfR ...