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. 每个字母出现的次数相同
3. 包含的字母相同
考虑使用整数数组,以“字母-97”作为索引,以出现的次数为值,如果这个字母没有出现过,则数组的值默认为0。
代码
public class Solution {
public boolean isAnagram(String s, String t) {
if(s.length() != t.length()) return false;
int[] numsOfS = new int[26];
int[] numsOfT = new int[26];
char[] arrayOfS = s.toCharArray();
char[] arrayOfT = t.toCharArray();
for(int i =0;i< arrayOfS.length;i++){
int index = arrayOfS[i] - 97;
numsOfS[index] ++;
}
for(int i=0;i< arrayOfT.length;i++){
int index = arrayOfT[i] - 97;
numsOfT[index]++;
}
for(int i=0; i< numsOfS.length;i++){
// System.out.println(" numsOfS "+ i + " value : "+ numsOfS[i]);
if(numsOfS[i] != 0){
if(numsOfT[i] == 0 || numsOfS[i] != numsOfT[i]){
return false;
}
}
}
return true;
}
}