Określanie, ile razy podciąg występuje w ciągu znaków w Pythonie
Próbuję dowiedzieć się, ile razy ciąg występuje w ciągu. Na przykład:
nStr = '000123000123'
Powiedzmy, że ciąg, którego chcę szukać, to 123. Oczywiście dzieje się to dwukrotnie w nStr, ale mam problem z zaimplementowaniem tej logiki w Pythonie. Co mam w tej chwili:
pattern = '123'
count = a = 0
while pattern in nStr[a:]:
a = nStr[a:].find(pattern)+1
count += 1
return count
Odpowiedź, którą powinien zwrócić, to 2. W tej chwili utknąłem w nieskończonej pętli.
Właśnie dowiedziałem się, że wykres jest znacznie lepszym sposobem, aby to zrobić, ale czy z ciekawości ktoś widzi sposób, aby wyglądało to tak, jak ja już mam?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
12 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
:
Wersja robocza twojego kodu:
Anonimowy użytkownik
Potwierdzenie od:
Na przykład: zwraca 2
Jeśli chcesz, aby zwracał 4 [ ], możesz spróbować czegoś takiego:
Nie wiem, czy istnieje lepszy sposób, aby to zrobić, ale wysłanie wiadomości ma na celu jedynie wyjaśnienie, jak działa .
Anonimowy użytkownik
Potwierdzenie od:
Można powiedzieć, że „wzorzec” podłańcucha pojawia się len (n) razy w „łańcuchu”.
Anonimowy użytkownik
Potwierdzenie od:
Daje wynik 3, ponieważ: [azc (bob) obegghaklbob] [azcbo (bob) egghaklbob] [azcbobobegghakl (bob)]
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Twoje podejście:
Anonimowy użytkownik
Potwierdzenie od:
a += nStr[a:].find(pattern)+1
...
zamiast:
a = nStr[a:].find(pattern)+1
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od: