[英]Check whether two String's are anagram
我寫了一個方法來檢查兩個字符串是否是字謎。 即使單詞不是anagram,該方法也會返回true。 我沒有在代碼中看到任何錯誤,任何想法我怎樣才能改進? 方法如下,
public static boolean checkAnagram( String one, String two){
if ( one.length() != two.length() )
return false;
char[] letters = new char[128];
for ( char c: one.toCharArray()){
letters[c]++;
}
for( int j =0; j < two.length(); j++){
int c = (int) two.charAt(j);
if( --letters[c] < 0) return false;
}
return true;
}
letters
是一個char
數組,所以letters[i]
永遠不會是負數( char
的范圍是0
到2^16-1
)。 如果您嘗試將其減少到0以下,它將下溢到Character.MAX_VALUE
。 將其更改為int[]
。
在第一個for
循環中,您正在使用:
letters[c]++;
當c
是一個char
。
在其他for
循環,你會cast
c
以int
通過執行(int)two.charAt(j)
將其分配給前c
。
此外,每次都會變為true
因為在char
數組中不能有負值,因此在每個索引處都存在letters[index] >= 0
。 您需要將數組更改為int[128]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.