Python: conserva los subconjuntos más pequeños de las strings

Dado un conjunto de strings, la tarea es escribir un programa en Python para retener las strings de los conjuntos que son el subconjunto más pequeño posible de strings encontradas. 

Entrada: test_set = {‘cbabca’, ‘cba’, ‘bdb’, ‘bdbab’, ‘abcx’}

Salida: {‘bdb’, ‘abcx’, ‘cba’}

Explicación: se elimina bdbab ya que se retiene bdb (subconjunto más pequeño).

Entrada: test_set = {‘cbabca’, ‘cba’, ‘bdbab’, ‘abcx’}

Salida: {‘bdbab’, ‘abcx’, ‘cba’}

Explicación: se elimina cbabca ya que se retiene cba (subconjunto más pequeño).

Método: Usando sorted() + any() + string slicing 

En esto, realizamos la tarea de obtener la substring más pequeña clasificando el conjunto de substrings y usamos any() para probar si alguno de los subconjuntos coincide con la substring de la string presente en las strings extraídas como resultados más pequeños que la string actual, y también un subconjunto de una string. 

Python3

# Python3 code to demonstrate working of
# Retain smallest subsets from string
# Using sorted() + any() + string slicing
  
# initializing strings set
test_set = {'cbabca', 'cba', 'bdb', 'bdbab', 'abcx'}
  
# printing original string
print("The original set is : " + str(test_set))
  
res = set()
for st_r in sorted(test_set, key=len):
  
    # getting smallest set and checking for already 
    # present smaller set for subset
    if not any(st_r[idx: idx + y + 1] in res 
               for idx in range(len(st_r)) 
               for y in range(len(st_r) - idx)):
        res.add(st_r)
  
# printing result
print("Required extracted strings : " + str(res))

Producción:

The original set is : {'cba', 'abcx', 'bdb', 'bdbab', 'cbabca'}
Required extracted strings : {'abcx', 'cba', 'bdb'}

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 *