Si tenemos una cadena de caracteres alfabéticos y algunos guiones, y queremos contar la cantidad de guiones entre dos caracteres alfabéticos en esta cadena. ¿Cuál es la forma más fácil de hacer esto?
Ejemplo:
Entrada: a--bc---d-k
salida: 2031
Esto significa que hay 2 guiones entre a y b, 0 guiones entre b y c, 3 guiones entre c y d y 1 guión entre d y k
¿Cuál es una buena manera de encontrar esta lista de salida en Python?
a-b-c
, ya-----------b
pasará a ser la misma salida11
?Respuestas:
Solución con expresiones regulares:
salida:
Solución con lógica de bucle de fuerza bruta:
salida:
fuente
f
frente del patrón es un error tipográfico? No necesita crear una cadena sin formato sin barras diagonales inversas. Tampoco hay necesidad de capturar grupo =). Buena respuesta a través def
, gracias. Estaba usando f-string, pero abandoné esa parte mientras mejoraba la respuesta, pero olvidé eliminarlaf
. Actualicé mi respuesta. No es necesario capturar el grupo también a la derecha :)count
solo se agregaresults
cuandoc != '-'
se encuentra. Six
termina con-
, el últimocount
será ignorado.Puede usar una solución muy simple como esta:
Salida:
'2031'
fuente
Si la entrada también puede comenzar con un guión, puede usar esto:
Pero si su entrada siempre comienza con una letra, es posible que no le guste el 0 que siempre está al principio de la lista.
Si necesita la salida como una cadena de entradas, puede agregar esto:
fuente
Aquí hay un enfoque de bucle simple:
fuente