Нужно перебрать все символы строки и если оный отсутствует в результирующей строке - добавить его в неё. Вот что у меня получилось:
String wordsChangeNotRepeat = "";
for (char c : wordsChange.toCharArray()) {
if (!wordsChangeNotRepeat.contains(c)) //тут подчёркивает с
wordsChangeNotRepeat += c;
}
System.out.println(wordsChangeNotRepeat);
Измените
if (!wordsChangeNotRepeat.contains(c))
на
if (wordsChangeNotRepit.indexOf(c) == -1)
Вместо проверки каждый раз wordsChangeNotRepeat можно использовать HashSet:
StringBuilder sb = new StringBuilder();
Set<Character> set = new HashSet<>();
for (char c : str.toCharArray())
{
if (!set.contains(c))
{
sb.append(c);
set.add(c);
}
}
String result = sb.toString();
На небольших строках разница заметна не будет, однако, например, на строке из 10 миллионов символов, диапазон charcode-ов которых составляет 1074, разница заметна:
indexOf: 1180ms
HashSet: 77ms
Так как итоговая строка получается достаточно короткая, то преимущества от использования StringBuilder вместо resultString += c в плане времени выполнения не наблюдается, однако в общем случае рекомендуется использовать для таких целей StringBuilder.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости