コーディング問題 #1 【解答】重複しない文字列

f:id:MasayaStripes:20200810232941j:plain

解答例

以下に解答コードを記載します。言語はJavaで実装しています。

public class Solution1 {
    
    public static void main(String[] args) {
        String[] words = {"abcde", "hello", "apple", "kite", "padle"};
        for (String word : words) {
            System.out.println(word + ": " + isUniqueChar(word));
        }
    }

    public static boolean isUniqueChar(String str) {
        if (str.length() > 128) {
            return false;
        }
        boolean[] charSet = new boolean[128];
        for (int i = 0; i < str.length(); i++) {
            int val = str.charAt(i);
            if (charSet[val]) {
                return false;
            } else {
                charSet[val] = true;
            }
        }
        return true;
    }
}

解説

今回提示した解答法は、boolean型の配列を作成する方法です。 for文のインデックスiのフラグは、i番目のアルファベットが文字列に含まれているかどうか(str.charAt(i))を示します。

また、文字列の長さが文字の種類の個数を超えた場合もすぐにfalseを返します。128文字の文字から280個の固有な文字列を形成することはできません。