2012-01-23 6 views
1

Это кажется чрезвычайно простым, но если у меня есть ментальный блок.
У меня есть строка, которая содержит, скажем, только «_» и «х», и мне нужно найти задом позиции всех х-последовательностей:найти положение последовательностей одного и того же символа в строке

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

Я думаю, вам следует объяснить, что такое 'enumerate', поскольку OP не говорит вам, что он знает Python. – phimuemue

+1

@phimeume он мог бы погубить его, но я добавлю его для ясности – soulcheck

Смежные вопросы