1. ホーム
  2. java

[解決済み] 文字列が一意な文字であるかどうかを判定する

2022-02-25 07:08:58

質問

ある文字列がすべて一意な文字であるかどうかを判定するアルゴリズムを実装せよ、という問題。

解答を見ましたが、よくわかりません。

public boolean isUniqueChars(String str) {
    if (str.length() > 256) return false;
    boolean[] char_set = new boolean[256];
    for (int i = 0; i < str.length(); i++) {
        int val = str.charAt(i);
        if (char_set[val])
            return false;
        char_set[val] = true;
    }
    return true;
}

を使用しないのでしょうか? parseInt または (int) コンバータをコードの前に置くか?(この場合 str.charAt[i] に自動的に変更されます。 int ?) は何をするのか boolean[] char set=new boolean[256] の意味は? なぜ char_set[val]=true ?

解決方法は?

をタグ付けしただけなので、コメントで私の説明を参照してください。 algorithm 言語は想定せず、アルゴリズムそのものを取り上げるだけです。

public boolean isUniqueChars(String str){

   //more than 256 chars means at least one is not unique
   //please see first comment by @Domagoj as to why 256 length
    if(str.length()>256) return false;  

        //keeping an array to see which chars have been used
        boolean[] char_set = new boolean[256];

        //iterating over the string
        for(int i=0; i<str,length;i++){

            //not sure what language this is, but let's say it returns an
            //int representation of the char
            int val=str.charAt(i);

            //meaning this has been set to true before, so this char is not unique
            if(char_set[val]) 
                //nope, not unique
                return false;

            //remember this char for next time
            char_set[val]=true;
        } 

    //if we reached here, then string is unique
    return true;
}