给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram" 输出: true
示例 2:
输入: s = "rat", t = "car" 输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
解题思路:
首先,字母异位词,肯定两者的长度是一样的,如果不一样,就不是。
其次,两者出现的字母是一样的,并且字母出现的次数是一样的。这样才是字母异位词。
所以,程序第一步判断长度是否一致,第二步遍历一次,把每个字母出现的次数统计起来,第三步,对比两者的结果是否一样。
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length()) return false;
char[] cs = s.toCharArray();
char[] ct = t.toCharArray();
//定义两个数组,存放s和t的字母,对应的次数,因为字母最多26个。
int[] sArray =new int[26];
int[] tArray =new int[26];
//第一次遍历,统计每个字母的长度
for(int i=0;i< cs.length;i++) {
sArray[cs[i]-'a'] +=1;
tArray[ct[i]-'a'] +=1;
}
//第二次结果表,对比是否成功
for(int i=0;i<sArray.length;i++) {
if(sArray[i]!=tArray[i])
return false;
}
return true;
}
}