Python: palabra de puntuación máxima

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

Deja una respuesta

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