Поэтому мне предъявлена проблема, которая заявляет. "Определите, содержит ли строка все уникальные символы"
Поэтому я написал это решение, которое добавляет каждый символ в набор, но если символ уже существует, он возвращает false.
private static boolean allUniqueCharacters(String s) {
Set<Character> charSet = new HashSet<Character>();
for (int i = 0; i < s.length(); i++) {
char currentChar = s.charAt(i);
if (!charSet.contains(currentChar)) {
charSet.add(currentChar);
} else {
return false;
}
}
return true;
}
Согласно книге, которую я читаю, это "оптимальное решение",
public static boolean isUniqueChars2(String str) {
if (str.length() > 128)
return false;
boolean[] char_set = new boolean[128];
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;
}
Мой вопрос в том, что моя реализация медленнее, чем представленная? Я предполагаю, что это так, но если поиск Хэша будет O (1), не будет ли они такой же сложностью?
Спасибо.