题目
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.
Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?
思路
刚开始不知道Anagram是什么意思,百度了下,意思为:由颠倒字母顺序而构成的字。
因此,算法思想为:统计两个字符串中出现的各个字符的个数是否完全一致,如果一致,则返回true,否则返回false。
实现代码如下:
public class Solution {
//统计s、t中出现的字符的个数是否一致
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length()){
return false;
}
int len =26;
int[] countInS = new int[len];
int[] countInT = new int[len];
for(int i=0;i<len;i++){
countInS[i]=0;
countInT[i]=0;
}
for(int i=0;i<s.length();i++){
countInS[s.charAt(i)-'a']++;
countInT[t.charAt(i)-'a']++;
}
for(int i=0;i<len;i++){
if(countInS[i]!=countInT[i]){
return false;
}
}
return true;
}
}