参考的力扣上的题解
给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram" 输出: true
示例 2:
输入: s = "rat", t = "car" 输出: false
解题思路:异位词也就是把字母排序之后完全相同
方法一:使用 数组.toCharArray方法把字符串变成数组,然后使用Arrays.sort()方法排序,然后判断是否相同即可
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length()){
return false;
}
char sl[]=s.toCharArray();
char tl[]=t.toCharArray();
Arrays.sort(sl);
Arrays.sort(tl);
for(int i=0;i<sl.length;i++){
if(sl[i]!=tl[i]){
return false;
}
}
return true;
}
}
后面发现可以使用:来简化代码
return Arrays.equals(str1, str2);
方法二:使用一个数组table容量为26(因为小写字母最多就那么多),将s中的字母变成数字装入table数组,如果t中的字母对应的数字在数组table中存在,那么--,判断条件:如果table小于等于0,就说明t有s没有的字母
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length()){
return false;
}
int table[]=new int[26];
int n=s.length();
for(int i=0;i<n;i++){
table[s.charAt(i)-'a']++;
}
for(int i=0;i<n;i++){
if((table[t.charAt(i)-'a']--)<=0){
return false;
}
}
return true;
}
}