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