Se tivermos uma sequência de caracteres alfabéticos e alguns traços, e desejarmos contar o número de traços entre quaisquer dois caracteres alfabéticos nessa sequência. qual é a maneira mais fácil de fazer isso?
Exemplo:
Entrada: a--bc---d-k
resultado: 2031
Isso significa que existem 2 traços entre a e b, 0 traço entre bec, 3 traços entre ce ed 1 traço entre d e k
qual é uma boa maneira de encontrar essa lista de saída em python?
a-b-c
ea-----------b
se tornará a mesma saída11
?Respostas:
Solução com regex:
resultado:
Solução com lógica de loop de força bruta:
resultado:
fonte
f
na frente do padrão é um erro de digitação? Você não precisa criar uma sequência bruta sem barras invertidas. Também não há necessidade de grupo de captura =). Resposta agradávelf
, obrigado. Eu estava usando f-string, mas larguei essa parte enquanto aprimorava a resposta, mas esqueci de removerf
. Eu atualizei minha resposta. Não precisa capturar grupo também né :)count
é anexado apenasresults
quandoc != '-'
é encontrado. Sex
terminar com-
, o últimocount
será ignorado.Você pode usar uma solução muito simples como esta:
Resultado:
'2031'
fonte
Se você inserir também pode começar com um traço, use:
Mas se sua entrada sempre começa com uma letra, você pode não gostar do 0 que está sempre no topo da lista.
Se você precisar da saída como uma sequência de entradas, poderá adicionar isso:
fonte
Aqui está uma abordagem simples de loop:
fonte