Dadas dos strings, imprime todos los caracteres comunes en orden lexicográfico. Si no hay letras comunes, imprima -1. Todas las letras son minúsculas.
Ejemplos:
Input : string1 : geeks string2 : forgeeks Output : eegks Explanation: The letters that are common between the two strings are e(2 times), g(1 time), k(1 time) and s(1 time). Hence the lexicographical output is "eegks" Input : string1 : hhhhhello string2 : gfghhmh Output : hhh
Este problema tiene una solución existente, consulte el enlace Imprimir caracteres comunes de dos strings en orden alfabético . Resolveremos este problema en python usando la propiedad de intersección y el módulo collections.Counter() . El enfoque es simple,
- Convierta ambas strings en un tipo de datos de diccionario utilizando el método Counter(str) , que contiene caracteres de string como clave y sus frecuencias como valor.
- Ahora encuentre elementos comunes entre dos strings usando la propiedad de intersección (a&b) .
- Resultará también un contador de diccionario que tendrá elementos comunes como claves y sus frecuencias comunes como valor.
- Use el método de elements() del diccionario de contador para expandir la lista de claves por su número de veces de frecuencia.
- Ordene la lista y concatene cada carácter de la lista de salida sin espacio para imprimir la string resultante.
Implementación:
Python3
# Function to print common characters of two Strings # in alphabetical order from collections import Counter def common(str1,str2): # convert both strings into counter dictionary dict1 = Counter(str1) dict2 = Counter(str2) # take intersection of these dictionaries commonDict = dict1 & dict2 if len(commonDict) == 0: print (-1) return # get a list of common elements commonChars = list(commonDict.elements()) # sort list in ascending order to print resultant # string on alphabetical order commonChars = sorted(commonChars) # join characters without space to produce # resultant string print (''.join(commonChars)) # Driver program if __name__ == "__main__": str1 = 'geeks' str2 = 'forgeeks' common(str1, str2)
Producción:
eegks
Complejidad temporal : O(n)
Espacio auxiliar : O(n)
Publicación traducida automáticamente
Artículo escrito por Shashank Mishra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA