Dada una string S de longitud N , que representa una oración, la tarea es imprimir las palabras con el promedio más alto y más bajo de valores ASCII de caracteres.
Ejemplos:
Entrada: S = «cada momento es un nuevo comienzo»
Salida:
La palabra con valores ASCII promedio mínimos es «comienzo».
La palabra con valores ASCII promedio máximos es «cada».
Explicación:
El promedio de los valores ASCII de los caracteres de la palabra “cada” = ((101+118+101+114+121)/5 =111) El promedio de los valores ASCII de los caracteres de la palabra “momento” =: (
( 109+111+109+101+110+116)/6 = 109,33333)
El promedio de los valores ASCII de los caracteres de la palabra “es” = ((105+115)/2 =)
El promedio de los valores ASCII de los caracteres del palabra «fresco» = ((102+114+101+115+104)/5 = 110)
El promedio de los valores ASCII de los caracteres de la palabra «principio» = ((98+101+103+105+110+110+ 105+110+103)/9 =105).
Por lo tanto, la palabra con el mínimo de promedio de valores ASCII es «comenzando» y el máximo de promedio de valores ASCII es «cada».Entrada: S = “el cielo es azul”
Salida:
La palabra con valores ASCII promedio mínimos es “azul”.
La palabra con valores ASCII promedio máximos es “cielo”.
Enfoque: La idea es usar la función split() .
- Divide todas las palabras de la string separadas por espacios usando la función split() . Guárdelo en una lista , diga lis[].
- Inicialice cuatro variables, digamos maxi, mini, maxId y minId , para almacenar el promedio máximo de valores ASCII, el valor ASCII promedio mínimo, el índice de la palabra con el valor ASCII promedio máximo en la lista lis y el índice de la palabra con el valor ASCII promedio mínimo en la lista lis[] respectivamente.
- Defina una función, digamos averageValue(), para encontrar el valor ASCII promedio de una string .
- Recorra la lista lis[] y realice las siguientes operaciones:
- Para cada i- ésima palabra en la lista lis[] , y guárdela en una variable, diga curr.
- Si curr> maxi, actualice maxi como maxi = curr y asigne maxId = i.
- Si curr< mini, actualice mini como mini = curr y asigne minId = i.
- Después de completar los pasos anteriores, imprima las palabras lis[minId] y lis[maxId] con el promedio mínimo y máximo del valor ASCII de sus caracteres .
Python3
# Python implementation of the above approach # Function to find the average # of ASCII value of a word def averageValue(s): # Stores the sum of ASCII # value of all characters sumChar = 0 # Traverse the string for i in range(len(s)): # Increment sumChar by ord(s[i]) sumChar += ord(s[i]) # Return the average return sumChar // len(s) # Function to find words with maximum # and minimum average of ascii values def printMinMax(string): # Stores the words of the # string S separated by spaces lis = list(string.split(" ")) # Stores the index of word in # lis[] with maximum average maxId = 0 # Stores the index of word in # lis[] with minimum average minId = 0 # Stores the maximum average # of ASCII value of characters maxi = -1 # Stores the minimum average # of ASCII value of characters mini = 1e9 # Traverse the list lis for i in range(len(lis)): # Stores the average of # word at index i curr = averageValue(lis[i]) # If curr is greater than maxi if(curr > maxi): # Update maxi and maxId maxi = curr maxId = i # If curr is lesser than mini if(curr < mini): # Update mini and minId mini = curr minId = i # Print string at minId in lis print("Minimum average ascii word = ", lis[minId]) # Print string at maxId in lis print("Maximum average ascii word = ", lis[maxId]) # Driver Code S = "every moment is fresh beginning" printMinMax(S)
Minimum average ascii word = beginning Maximum average ascii word = every
Complejidad de tiempo: O(N), ya que estamos usando un bucle para atravesar N veces, por lo que nos costará O(N) tiempo
Espacio auxiliar: O(1), ya que no estamos usando ningún espacio adicional.
Publicación traducida automáticamente
Artículo escrito por vikkycirus y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA