给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
提示:
1 <= s.length, t.length <= 5 * 104
s 和 t 仅包含小写字母
作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn96us/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
class Solution {
public boolean isAnagram(String s, String t) {
char res1[] = new char[26]; //创建一个记录26个英文字母出现频率的数组
char res2[] = new char[26];
char[] str1 = s.toCharArray(); //字符串转为字符数组
char[] str2 = t.toCharArray();
for(int i=0;i<str1.length;i++){ //分别遍历两个字符数组,记录频率到数组res中
res1[str1[i]-'a']++;
}
for(int i=0;i<str2.length;i++){
res2[str2[i]-'a']++;
}
if(Arrays.equals(res1, res2)){ //比较频率数组是否相等
return true;
}
return false;
}
}
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length())return false;
char res1[] = new char[26]; //创建一个记录26个英文字母出现频率的数组
char[] str1 = s.toCharArray(); //字符串转为字符数组
char[] str2 = t.toCharArray();
int count=0;
for(int i=0;i<str1.length;i++){
if(++res1[str1[i]-'a']==1){
count++;
}
if(--res1[str2[i]-'a']==0){
count--;
}
}
if(count==0){
return true;
}
return false;
}
}