Как отсортировать строки по буквам и взять только одну букву без повтора, при этом вернуть самую длинную строку?
Возьмем 2 строки s1 и s2, содержащие только буквы от a до z. Вернуть новую отсортированную строку, как можно более длинную, содержащую отдельные буквы - каждая взятая только один раз - исходящая из s1 или s2.
Мой код:
function longest(s1, s2) {
let result = '';
const str = s1.length > s2.length ? s1 : s2;
for (let i = 0; i < str.length; i += 1) {
if (result.indexOf(str[i]) < 0) {
result += str[i];
}
}
return result.split('').sort().join('');
}
console.log(longest("loopingisfunbutdangerous", "lessdangerousthancoding"));
Ожидаю на выходе получить отсортированную строку : "abcdefghilnoprstu" А, по факту почему-то получаю -->>> "abdefgilnoprstu" БЕЗ двух букв "c" и "h" ; Почему они отбрасываться не могу понять и как сделать чтобы этого не происходило??? Подскажите где ошибка или какую проверку еще надо сделать!?
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
Ошибка - Вы рассмaтриваете буквы только из одной строки.
function longest(s1, s2) {
return Array.from(new Set((s1 + s2).split(''))).sort().join('');
}
const result = longest("loopingisfunbutdangerous", "lessdangerousthancoding");
console.log(result.length, result);