解题思路:该题意思即是两个字符串是否具有相同的字符组成的串,首先记录第一个字符串出现的字符及其个数,然后与第二个字符串想比较。(另一个思路:将两个字符串分别排序,不过耗时。)
Java代码实现:
public class Solution {
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length()) return false;
Map<String,Integer> map =new HashMap<String,Integer>();
for(int i=0;i<s.length();i++){
String str=String.valueOf(s.charAt(i));
if(map.containsKey(str)) map.put(str, map.get(str)+1);
else map.put(str, 1);
}
for(int i=0;i<t.length();i++){
String str=String.valueOf(t.charAt(i));
if(map.containsKey(str)) {
map.put(str, map.get(str)-1);
if(map.get(str)==0) map.remove(str);
}
else map.put(str, 1);
}
if(map.isEmpty()) return true;
else return false;
}
}
原题地址:
https://leetcode.com/problems/valid-anagram/