🌟
文字列の中で重複しない初めての文字を探す
例
"aabbccdde" → "e"
"wxyz" → "w"
function noRepeat(str) {
const arr = str.split("")
return arr.find((ele) => arr.indexOf(ele)===arr.lastIndexOf(ele))
}
JavaScript
であれば indexOf
と lastIndexOf
を用いてその結果が一致するインデックスであればすなわち唯一登場する文字列となり判定できる。
Python
であれば 文字列に対して特定の文字が登場するインデックスを検索する find
と 右側の文字から検索し始めインデックスを探す rfind
を用いれば判定できる。
ただし、 find
や rfind
は文字型の組み込み関数なので JavaScript
のように文字列を分割して配列にする必要はない。
また、実装方法として ループを回して判定するが、この際にリスト内包表記ではなく
ジェネレータ
で記述し、条件が合致したときに next
で値を取り出すことにより、よりメモリを節約した実装をおこなうことができる。
def no_repeat(s):
return next(c for c in s if s.find(c) == s.rfind(c))
Discussion