Python: ocurrencias no superpuestas de N caracteres K repetidos

Dada una string, calcule las ocurrencias no superpuestas de N caracteres K repetidos.

Entrada : test_str = ‘aaabaaaabbaa’, K = “a”, N = 3
Salida : 2
Explicación : “aaa” aparece dos veces como ejecución no superpuesta.

Entrada : test_str = ‘aaabaaaabbbaa’, K = “b”, N = 3
Salida : 1
Explicación : “bbb” se produce una vez como ejecución no superpuesta.

Método n. ° 1: usar sum() + split() [Funciona solo para bi-string]

En esto, la división se realiza en un carácter que no sea K, y luego cada segmento se cuenta para Ocurrencias y la frecuencia se suma usando sum(). Esto funciona para strings que contienen solo 2 caracteres únicos.

Python3

# Python3 code to demonstrate working of 
# Non-Overlapping occurrences of N Repeated K character
# Using split() + sum
  
# initializing string
test_str = 'aaabaaaabbaa'
  
# printing original string
print("The original string is : " + str(test_str))
  
# initializing K 
K = "a"
  
# initializing N 
N = 2
  
# getting split char
spl_char = [ele for ele in test_str if ele != K][0]
  
# getting split list 
temp = test_str.split(spl_char)
  
# getting Non-Overlapping occurrences
res = sum( len(sub) // N for sub in temp)
  
# printing result 
print("The Non-Overlapping occurrences : " + str(res)) 
Producción

The original string is : aaabaaaabbaa
The Non-Overlapping occurrences : 4

Método #2: Usar re.findall()

Esta es otra forma en la que se puede realizar esta tarea. Esto puede manejar todo tipo de strings y usar regex() para resolver esto.

Python3

# Python3 code to demonstrate working of 
# Non-Overlapping occurrences of N Repeated K character
# Using re.findall()
import re
  
# initializing string
test_str = 'aaabaaaabbaa'
  
# printing original string
print("The original string is : " + str(test_str))
  
# initializing K 
K = "a"
  
# initializing N 
N = 2
  
# getting length using len()
# getting all occ. of substring
res = len(re.findall(K * N, test_str))
  
# printing result 
print("The Non-Overlapping occurrences : " + str(res)) 
Producción

The original string is : aaabaaaabbaa
The Non-Overlapping occurrences : 4

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *