题目
大致思路
- 本题的思路跟昨天的寻找唯一字符的类似。先创建存放区,也就是给a-z26个字母建立一个频率数组,然后遍历存放频率,最后依次比较存放的频率值是否相同即可。
- 可能存在的另一个问题就是大家对字母异位词的理解: 字母的出现频率和样式都相同,只是位置不同,称为异位词
代码实现
class Solution {
public boolean isAnagram(String s, String t) {
//字母异位数,比较字母出现的频率及各字母是否相同即可
//先判断s与t的长度是否一致
if(s.length() != t.length()){
return false;
}
//创建两个26个字母的存放区
int[] ss = new int[26];
int[] ts = new int[26];
//先将其频率存入频率数组ss和ts
for(int i = 0;i<s.length();i++){
ss[s.charAt(i)- 97]++;
ts[t.charAt(i) - 97]++;
}
//判断存放的频率值是否相同,不相同则返回false
for(int i = 0;i<26;i++){
if(ss[i]!=ts[i]){
return false;
}
}
return true;
}
}