Вопрос проверяет умение работать со строкой как с набором символов/токенов и знание Set или других способов дедупликации.
Проще всего преобразовать строку в массив, удалить дубли через Set и собрать обратно. Если нужно удалить дубли символов — используйте new Set(str) и join. Если нужно удалить дубли слов — сначала разбейте строку по пробелам (split), примените Set, затем join. Важно уточнить, что именно считается “дублем”: символы, слова или подстроки.
Способ зависит от того, что именно дублируется и как нужно сохранить порядок.
Дедупликация — удаление повторяющихся элементов, оставляя только уникальные.
const s = "abacaba";
const unique = [...new Set(s)].join("");
console.log(unique); // "abc"
new Set(s) перебирает строку как последовательность символов и хранит уникальные.
[...] превращает Set обратно в массив.
join("") собирает строку.
const s = "cat dog cat bird dog";
const unique = [...new Set(s.split(" "))].join(" ");
console.log(unique); // "cat dog bird"
const s = "cat dog cat";
const words = s.trim().split(/\s+/); // несколько пробелов → один разделитель
const unique = [...new Set(words)].join(" ");
console.log(unique); // "cat dog"
Игнорировать регистр, но сохранить оригинальный вид первого встретившегося слова:
const s = "Cat cat DOG dog";
const words = s.split(" ");
const seen = new Set();
const unique = [];
for (const w of words) {
const key = w.toLowerCase();
if (!seen.has(key)) {
seen.add(key);
unique.push(w);
}
}
console.log(unique.join(" ")); // "Cat DOG"
Для удаления дублей в строке чаще всего используют Set:
для символов: [...] + Set + join("")
для слов/токенов: split(...) + Set + join(...)
Ключевое — правильно выбрать “единицу уникальности” (символ, слово, токен) и нужный разделитель.