🌟

文字列の中で重複しない初めての文字を探す

2025/01/31に公開

"aabbccdde" → "e"
"wxyz" → "w"
function noRepeat(str) {  
  const arr = str.split("")
  return arr.find((ele) => arr.indexOf(ele)===arr.lastIndexOf(ele))
}

JavaScript であれば indexOflastIndexOf を用いてその結果が一致するインデックスであればすなわち唯一登場する文字列となり判定できる。

Python であれば 文字列に対して特定の文字が登場するインデックスを検索する find と 右側の文字から検索し始めインデックスを探す rfind を用いれば判定できる。
ただし、 findrfind は文字型の組み込み関数なので JavaScript のように文字列を分割して配列にする必要はない。

また、実装方法として ループを回して判定するが、この際にリスト内包表記ではなく
ジェネレータ で記述し、条件が合致したときに next で値を取り出すことにより、よりメモリを節約した実装をおこなうことができる。

def no_repeat(s):
    return next(c for c in s if s.find(c) == s.rfind(c))

Discussion