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.
Note:
You may assume the string contains only lowercase alphabets.
这道题目不难,AP程序如下:
if(s.equals(t))
return true;
if(s==null||t==null||s.length()!=t.length())
return false;
int[] num=new int[26];
for(int i=0;i<s.length();i++){
num[s.charAt(i)-'a']++;
num[t.charAt(i)-'a']--;
}
for(int i:num ){
if(i!=0)
return false;
}
return true;
同时,这道题目还有一种其他的解法,使用map来做:
if(s.equals(t))
return true;
if(s==null||t==null||s.length()!=t.length())
return false;
HashMap<Character, Integer> sMap=new HashMap<Character,Integer>();
HashMap<Character, Integer> tMap=new HashMap<Character,Integer>();
for(int i=0;i<s.length();i++){
if(sMap.containsKey(s.charAt(i))){
sMap.put(s.charAt(i),sMap.get(s.charAt(i))+1);
}else{
sMap.put(s.charAt(i),1);
}
if(tMap.containsKey(t.charAt(i))){
tMap.put(t.charAt(i),tMap.get(t.charAt(i))+1);
}else{
tMap.put(t.charAt(i),1);
}
}
for(Character key:sMap.keySet()){
if(!tMap.containsKey(key)||!tMap.get(key).equals(sMap.get(key)))
return false;
}
return true;
我想说的是,一定要注意以上程序在最后的地方,比较两个map中的key,一定要用equals,不能用==,具体参见另一篇博客,明天更新。