Karakter Pertama yang Tidak Berulang

Diberikan string s, temukan dan kembalikan contoh pertama dari karakter yang tidak berulang di dalamnya. Jika tidak ada karakter seperti itu, kembalikan '_'.

Contoh

  • Untuk s = "abacabad", outputnya seharusnya
    firstNotRepeatingCharacter(s) = 'c'.
  • Ada 2 karakter yang tidak berulang dalam string: 'c'dan 'd'. Kembalikan c karena muncul di string terlebih dahulu.
  • Untuk s = "abacabaabacaba", outputnya seharusnya
    firstNotRepeatingCharacter(s) = '_'.
  • Tidak ada karakter dalam string ini yang tidak berulang.

Hal pertama yang pertama, s.length bisa sama dengan 1 jadi kita bisa langsung menangani kasus itu!

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

Selanjutnya, saya membagi string menjadi sebuah array. Saya kemudian mengulangi array dan memeriksa apakah indeks pertama dari karakter saat ini sama dengan indeks terakhir. Jika ya, maka kita memiliki karakter pertama yang tidak berulang dan kita mengembalikannya.

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;
}

Jika tidak ada karakter yang cocok, kami mengembalikan _. Inilah keseluruhan algoritmanya!

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 '_';
}

Saya yakin ada cara yang lebih baik dan lebih cepat untuk menyelesaikan masalah ini. Berikan solusi Anda di komentar di bawah!