Wenn wir eine Zeichenfolge aus alphabetischen Zeichen und einige Bindestriche haben und die Anzahl der Bindestriche zwischen zwei beliebigen alphabetischen Zeichen in dieser Zeichenfolge zählen möchten. Was ist der einfachste Weg, dies zu tun?
Beispiel:
Eingang: a--bc---d-k
Ausgabe: 2031
Dies bedeutet, dass zwischen a und b 2 Striche, zwischen b und c 0 Striche, zwischen c und d 3 Striche und zwischen d und k 1 Striche vorhanden sind
Was ist ein guter Weg, um diese Ausgabeliste in Python zu finden?
a-b-c
unda-----------b
soll die gleiche Ausgabe werden11
?Antworten:
Lösung mit Regex:
Ausgabe:
Lösung mit Brute-Force-Loop-Logik:
Ausgabe:
quelle
f
vor dem Muster ist ein Tippfehler? Sie müssen keine rohe Zeichenfolge ohne Backslashes erstellen. Auch keine Erfassungsgruppe erforderlich =). Schöne Antwort durchf
, danke. Ich habe F-String verwendet, aber ich habe diesen Teil entfernt, während ich die Antwort verbessert habe, aber ich habe vergessen, ihn zu entfernenf
. Ich habe meine Antwort aktualisiert. Keine Notwendigkeit Capture-Gruppe auch richtig :)count
wird nur angehängt,results
wennc != '-'
es auftritt . Wenn mitx
endet-
, wird lastcount
ignoriert.Sie können eine sehr einfache Lösung wie diese verwenden:
Ausgabe:
'2031'
quelle
Wenn Ihre Eingabe möglicherweise auch mit einem Bindestrich beginnt, können Sie Folgendes verwenden:
Wenn Ihre Eingabe jedoch immer mit einem Buchstaben beginnt, gefällt Ihnen möglicherweise nicht die 0, die immer am Anfang der Liste steht.
Wenn Sie die Ausgabe als Ints-Zeichenfolge benötigen, können Sie Folgendes hinzufügen:
quelle
Hier ist ein einfacher Loop-Ansatz:
quelle