Dada una string, la tarea es escribir un programa de Python para calcular palabras de puntuación máxima, es decir, palabras formadas por caracteres con una suma posicional máxima.
Ejemplos:
Entrada: test_str = ‘los geeks deben usar geeksforgeeks para el conocimiento de cs’
Salida: geeksforgeeks
Explicación: la suma de los valores posicionales de los caracteres para la palabra «geeksforgeeks» es máxima, por lo tanto, el resultado.
Entrada: test_str = ‘a los geeks les encantan los geeksforgeeks’
Salida: geeksforgeeks
Explicación: la suma de los valores posicionales de los caracteres para la palabra «geeksforgeeks» es máxima, por lo tanto, el resultado.
Método #1: Usar split() + loop + ord() + ascii_lowercase
En esto, inicialmente dividimos cada palabra usando split(), obtenemos la magnitud posicional usando ord(), ascii_lowercase verifica el conjunto correcto de caracteres elegidos para la evaluación.
Python3
# Python3 code to demonstrate working of # Maximum Scoring word # Using split() + loop + ord() + ascii_lowercase import string # initializing string test_str = 'geeks must use geeksforgeeks for cs knowledge' # printing original string print("The original string is : " + str(test_str)) score = 0 max_sc = 0 res = '' for wrd in test_str.split(): score = 0 # computing score for lttr in wrd: if lttr in string.ascii_lowercase: score += ord(lttr) - 96 # updating maximum if score > max_sc: max_sc = score res = wrd # printing result print("Maximum scoring word : " + str(res))
Producción:
The original string is : geeks must use geeksforgeeks for cs knowledge Maximum scoring word : geeksforgeeks
Método n.º 2: Usar sum() + bucle + orden()
Similar al método anterior, la única diferencia aquí es que sum() se usa para la tarea de suma en lugar del bucle interno.
Python3
# Python3 code to demonstrate working of # Maximum Scoring word # Using sum() + loop + ord() import string # initializing string test_str = 'geeks must use geeksforgeeks for cs knowledge' # printing original string print("The original string is : " + str(test_str)) score = 0 max_sc = 0 res = '' for wrd in test_str.split(): # computing score # sum for cumulation score = sum(ord(lttr) - 96 for lttr in wrd if lttr in string.ascii_lowercase) # updating maximum if score > max_sc: max_sc = score res = wrd # printing result print("Maximum scoring word : " + str(res))
Producción:
The original string is : geeks must use geeksforgeeks for cs knowledge Maximum scoring word : geeksforgeeks
La complejidad de tiempo y espacio para todos los métodos es la misma:
Complejidad temporal: O(n 2 )
Complejidad espacial: O(n)
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