2012-01-23 12 views
1

これは非常に単純なようですが、もし私が精神的なブロックを持っていれば。
私は、言う、唯一の「_」と「X」を含む文字列を持っている、と私は後方のすべてのx系列の位置を見つける必要がある:行内に同じ文字のシーケンスの位置を見つける

xxx___xxx___xxx 
___x__xxx_xxx__ 

最速のアプローチは何ですか?私はKMPかBMを使うべきですか、それとも過剰ですか?

+5

文字列を文字でスキャンすると何が問題になりますか? – soulcheck

+1

私はリニアスキャンに同意します:あなたは少なくとも入力を読むことができるので、O(n)を打ち負かすことはできません –

答えて

4

文字列で文字列をスキャンできます。ここにPythonの擬似コードがあります。

prev = '' 
# enumerate(collection) enumerates collection elements along with their indices 
# in the form of tuple (index, element) 
# in python strings are collections of characters 
for i, c in enumerate(string): 
    if c == 'x' and c != prev: 
      print "found x sequence at position %d" % i # (this prints out the index) 
    prev = c 
+2

OPは彼がPythonを知っているとは言わないので、 'enumerate'のことを説明すべきだと思います。 – phimuemue

+1

@phimeume彼はそれをGoogleで探せる可能性がありますが、わかりやすくするために追加します – soulcheck

関連する問題