参考代码:
class Solution {
public boolean isAnagram(String s, String t) {
int[] count = new int[26];
for(int i = 0; i < s.length(); i++){
count[s.charAt(i) - 'a']++;
}
for(int i = 0; i < t.length(); i++){
count[t.charAt(i) - 'a']--;
}
for(int i = 0; i < 26; i++){
if(count[i] != 0) return false;
}
return true;
}
}
解题思路:
创建一个长度为26的数组,s中出现一个字母,在对应的数组中就加一,t中出现一个字母,在对应的数组中就减一,如果恰好是字母异位词那么最终数组中的数全部为0。
java.lang.String.charAt() 方法返回指定索引处的char值。索引范围是从0到length() - 1。对于数组索引,序列的第一个char值是在索引为0,索引1,依此类推。
具体实现:
先创建长度为26的数组,因为有26个字母,所以最多出现26种:int[] count = new int[26];
第一个for循环,将s中出现的字母对应的数组加一:
for(int i = 0; i < s.length(); i++){
count[s.charAt(i) - 'a']++;
}//比如出现a就是count[0]++
第二个for循环就是将t中出现的字母对应的数组减一:
for(int i = 0; i < t.length(); i++){
count[t.charAt(i) - 'a']--;
}//比如出现a就是count[0]--
第三个for循环就是判断数组中的数是否全部为0。如果出现不为0则说明出现字母的个数不相等,则return false。