Как отсортировать строки по буквам и взять только одну букву без повтора, при этом вернуть самую длинную строку?

Возьмем 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);

→ Ссылка