题目
给定两个字符串 s
和 t
,编写一个函数来判断它们是不是一组变位词(字母异位词)。
注意:若 s
和 t
中每个字符出现的次数都相同且字符顺序不完全相同,则称 s
和 t
互为变位词(字母异位词)。
示例 1:
输入: s = "anagram", t = "nagaram" 输出: true
示例 2:
输入: s = "rat", t = "car" 输出: false
示例 3:
输入: s = "a", t = "a" 输出: false
提示:
1 <= s.length, t.length <= 5 * 104
s
andt
仅包含小写字母
进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
注意:本题与主站 242 题相似(字母异位词定义不同):力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
LCR 032. 有效的字母异位词 - 力扣(LeetCode)
题解
思路:首先判断s和t相等时返回false。
使用两个26大小的int[]来总结有多少个字母。s.charAt(i)-'a'对应index
代码:
class Solution {
public boolean isAnagram(String s, String t) {
if(s.equals(t))return false;
int[] ssum=new int[26];
int[] tsum=new int[26];
for(int i=0;i<s.length();i++)
ssum[s.charAt(i)-'a']++;
for(int j=0;j<t.length();j++) {
tsum[t.charAt(j)-'a']++;
}
for(int k=0;k<26;k++) {
if(ssum[k]!=tsum[k])
return false;
}
return true;
}
}