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