Jeśli mamy ciąg znaków alfabetu i niektóre myślniki i chcemy policzyć liczbę myślników między dowolnymi dwoma znakami alfabetu w tym ciągu. jaki jest najłatwiejszy sposób to zrobić?
Przykład:
Wejście: a--bc---d-k
wynik: 2031
Oznacza to, że istnieją 2 myślniki między aib, 0 myślnik międzyb i c, 3 myślniki między cid oraz 1 myślnik między d i k
jaki jest dobry sposób na znalezienie tej listy wyników w Pythonie?
a-b-c
ia-----------b
staną się tym samym wyjściem11
?Odpowiedzi:
Rozwiązanie z wyrażeniem regularnym:
wynik:
Rozwiązanie z logiką pętli siłowej:
wynik:
źródło
f
przed wzorem jest literówka? Nie musisz tworzyć nieprzetworzonego ciągu bez ukośników. Również nie ma potrzeby przechwytywania grupy =). Ładna odpowiedź przezf
, dzięki. Używałem f-string, ale upuściłem tę część, poprawiając odpowiedź, ale zapomniałem usunąćf
. Zaktualizowałem swoją odpowiedź. Grupa przechwytująca nie musi też mieć racji :)count
jest dołączany tylko wresults
momenciec != '-'
napotkania. Jeślix
kończy się na-
, ostatnicount
zostanie zignorowany.Możesz użyć bardzo prostego rozwiązania takiego jak to:
Wynik:
„2031”
źródło
Jeśli wpiszesz, możesz także zacząć od myślnika, możesz użyć tego:
Ale jeśli twój wpis zawsze zaczyna się od litery, możesz nie polubić 0, która zawsze znajduje się na początku listy.
Jeśli potrzebujesz danych wyjściowych jako ciągu liczb całkowitych, możesz dodać to:
źródło
Oto proste podejście do pętli:
źródło