题目
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
思路
利用两个数组,存放每种对应字母的个数,只要数组中有任意两个对应位置的书值不相等,那么这两个就不是字母异位词。
代码
//判断 t 是不是 s 的字母异位词
class Solution {
public boolean isAnagram(String s, String t) {
int length_s=s.length();
int length_t=t.length();
if (length_s!=length_t) //长度不相等,绝对不会是异位词
return false;
int num_s[]=new int[26];
int num_t[]=new int[26];
for (int i=0;i<length_s;++i)
{
++num_s[s.charAt(i)-97];
++num_t[t.charAt(i)-97];
}
for (int i=0;i<26;++i)
{
if (num_s[i]!=num_t[i])
return false;
}
return true;
}
}
结果
这种算是比较暴力的方法,目前还没有想到什么更好的办法来改进它。不太建议使用哈希表来解答,因为这道题所需要就也是一个长度为26的数组,使用哈希表的话,会降低速度。