有效的字母异位词----java

给定两个字符串 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;

    }
}
上一篇:AcWing 373. 車的放置


下一篇:389. 找不同