题目:
方法一:
把s和t字符串的字母按顺序排序,组成新的字符串,然后对比
class Solution {
public boolean isAnagram(String s, String t) {
char S[] = s.toCharArray();
char T[] = t.toCharArray();
Arrays.sort(S);
Arrays.sort(T);
String SStr = new String(S);
String TStr = new String(T);
if(SStr.equals(TStr)){
return true;
}
return false;
}
}
方法二:
题目中说了,只有小写字母,那么就可以用一个数组来记录每个字母出现的次数,数组索引就是字母的位置。
class Solution {
public boolean isAnagram(String s, String t) {
//将每个字母进行计数,比较每个字母的出现次数
int[] arr1 = new int[26];
int[] arr2 = new int[26];
char S[] = s.toCharArray();
char T[] = t.toCharArray();
for(int i=0;i<S.length;i++){
arr1[S[i]-'a']++;
}
for(int i=0;i<T.length;i++){
arr2[T[i]-'a']++;
}
for(int i = 0;i<arr1.length||i<arr2.length;i++){
if(arr1[i]!=arr2[i]){
return false;
}
}
return true;
}
}
方法三:
使用hashmap
class Solution {
public boolean isAnagram(String s, String t) {
Map map1 = new HashMap();
Map map2 = new HashMap();
char[] S = s.toCharArray();
char[] T = t.toCharArray();
for(int i =0;i<S.length;i++){
int m;
if(map1.get(S[i])==null){
m=0;
}
else{
m = (int)map1.get(S[i]);
}
m++;
map1.put(S[i],m);
}
for(int i =0;i<T.length;i++){
int m;
if(map2.get(T[i])==null){
m=0;
}
else{
m = (int)map2.get(T[i]);
}
m++;
map2.put(T[i],m);
}
if(map1.equals(map2)){
return true;
}
return false;
}
}