簡體   English   中英

檢查兩個String是否為anagram

[英]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的范圍是02^16-1 )。 如果您嘗試將其減少到0以下,它將下溢到Character.MAX_VALUE 將其更改為int[]

在第一個for循環中,您正在使用:

letters[c]++;

c是一個char
在其他for循環,你會cast cint通過執行(int)two.charAt(j)將其分配給前c

此外,每次都會變為true因為在char數組中不能有負值,因此在每個索引處都存在letters[index] >= 0 您需要將數組更改為int[128]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM