первый неповторяющийся символ

Имея строку s, найдите и верните в ней первое вхождение неповторяющегося символа. Если такого символа нет, вернуть '_'.

Пример

  • Для s = "abacabad" вывод должен быть
    firstNotRepeatingCharacter(s) = 'c'.
  • В строке 2 неповторяющихся символов: 'c'и 'd'. Вернуть c, так как он появляется в строке первым.
  • Для s = "abacabaabacaba" вывод должен быть
    firstNotRepeatingCharacter(s) = '_'.
  • В этой строке нет символов, которые не повторяются.

Во-первых, s.length может равняться 1, так что мы можем сразу разобраться с этим случаем!

function firstNotRepeatingCharacter(s) {
  if (s.length === 1) return s;
}

Затем я разбиваю строку на массив. Затем я перебрал массив и проверил, равен ли первый индекс текущего символа последнему индексу. Если да, то у нас есть первый неповторяющийся символ и мы его возвращаем.

const chars = s.split('');
for (let i = 0; i < chars.length; i++) {
  const char = chars[i];
  if (chars.indexOf(char) === chars.lastIndexOf(char)) return char;
}

Если ни один из символов не совпадает, мы возвращаем _. Вот и весь алгоритм вместе!

function firstNotRepeatingCharacter(s) {
  if (s.length === 1) return s;
  const chars = s.split('');
  for (let i = 0; i < chars.length; i++) {
    const char = chars[i];
    if (chars.indexOf(char) === chars.lastIndexOf(char)) return char;
  }
  return '_';
}

Я уверен, что есть гораздо лучший и более быстрый способ решить эту проблему. Оставьте свои решения в комментариях ниже!