题目:两个给定的字符串是否由相同的字符组成
解答1:将两个字符串排序,然后逐位比较;
解答2:
判断两个字符串中字符的类型和各种类型的数量是否都相同
private boolean areAnagrams(char[] str0, char[] str1){
if(str0 == null && str1 == null){
return true;
}
if((str0 == null && str1 != null)
|| (str0 != null && str1 == null)
|| (str0.length != str1.length)){
return false;
}
//简单起见,假设所有字符在ascii码字符范围内
int[] ascii0 = new int[127];
int[] ascii1 = new int[127];
for(int i=0; i<str0.length; i++){
char c0 = str0[i];
ascii0[c0] = ascii0[c0] + 1;
char c1= str1[i];
ascii1[c1] = ascii1[c1] + 1;
}
for(int i=0; i<127; i++){
if(ascii0[i] != ascii1[i]){
return false;
}
}
return true;
}