Мне нужно проверить в Java, состоит ли слово из уникальных букв (без учета регистра). Поскольку прямое решение скучно, я придумал:
indexOf(char) == lastIndexOf(char)
HashSet
c[i] == c[i+1]
В настоящее время я люблю # 2 больше всего, кажется, самый простой способ. Какие-нибудь другие интересные решения?
Вы можете оптимизировать первое решение (indexof == lastindexof), просто проверив условие для всех 26 алфавитов, т.е. для a, b, c, d, .., z. Таким образом, вам не нужно проходить всю строку.
Вот код, который я написал для ответа Каче (от взлома кода и изменения):
public boolean check() { int[] checker = new int[8]; String inp = "!a~AbBC#~"; boolean flag = true; if (inp.length() > 256) flag = false; else { for(int i=0;i<inp.length();i++) { int x = inp.charAt(i); int index = x/32; x = x%32; if((checker[index] & (1<<x)) > 0) { flag = false; break; } else checker[index] = checker[index] | 1<<x; } } return flag; }