Si nous avons une chaîne de caractères alphabétiques et quelques tirets, et que nous voulons compter le nombre de tirets entre deux caractères alphabétiques dans cette chaîne. Quelle est la manière la plus simple de faire ça?
Exemple:
Contribution: a--bc---d-k
production: 2031
Cela signifie qu'il y a 2 tirets entre a et b, 0 tiret entre b et c, 3 tirets entre c et d et 1 tiret entre d et k
quelle est la bonne façon de trouver cette liste de sortie en python?
a-b-c
eta-----------b
deviendront la même sortie11
?Réponses:
Solution avec regex:
production:
Solution avec logique de boucle de force brute:
production:
la source
f
devant du motif est une faute de frappe? Vous n'avez pas besoin de créer une chaîne brute sans barre oblique inverse. Pas besoin non plus de groupe de capture =). Nice answer throughf
, merci. J'utilisais une chaîne f, mais j'ai laissé tomber cette partie pendant que j'améliorais la réponse, mais j'ai oublié de la supprimerf
. J'ai mis à jour ma réponse. Pas besoin de groupe de capture aussi à droite :)count
n'est ajouté qu'auresults
moment où ilc != '-'
est rencontré. Six
se termine par-
, lastcount
sera ignoré.Vous pouvez utiliser une solution très simple comme celle-ci:
Production:
«2031»
la source
Si votre saisie peut également commencer par un tiret, vous pouvez utiliser ceci:
Mais si votre entrée commence toujours par une lettre, vous n'aimerez peut-être pas le 0 qui est toujours en tête de liste.
Si vous avez besoin de la sortie sous forme de chaîne d'entiers, vous pouvez ajouter ceci:
la source
Voici une approche en boucle simple:
la source