方法一:
时间:12ms
思路:
把string转换为char数组,然后利用Arrays.sorts()排序,如果只是调换了顺序则char数组应该完全一样, 如果出现不一样则return false.
代码
public boolean isAnagram(String s, String t) {
char[] temp1=s.toCharArray();
char[] temp2=t.toCharArray();
if(temp1.length!=temp2.length) return false;
Arrays.sort(temp1);
Arrays.sort(temp2);
for(int i=0;i<temp1.length;i++){
if(temp1[i]!=temp2[i]){
return false;
}
}
return true;
}
方法二:(leetcode中的优解)
时间:2ms
思路:建立两个数组,对两个字符串的字母进行统计,然后遍历两个数组进行对比
代码
public boolean isAnagram(String s, String t) {
char[] s1 = s.toCharArray();
char[] t1 = t.toCharArray();
int[] res1 = new int[26];
int[] res2 = new int[26];
for (int i = 0; i < s1.length; i++) {
res1[s1[i]-'a']+=1;
}
for (int i = 0; i < t1.length; i++) {
res2[t1[i]-'a']+=1;
}
for (int i = 0; i < res1.length; i++) {
if (res1[i]!=res2[i]){
return false;
}
}
return true;
}