解答例
以下に解答コードを記載します。言語は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個の固有な文字列を形成することはできません。