Ordene una string en orden decreciente de valores asociados después de la eliminación de valores menores que X

Dado un entero X y una string str que consta de textos separados por espacios y números colocados alternativamente, la tarea es ordenar la string de modo que los textos y los números aparezcan en orden decreciente de números asociados después de eliminar todos los números menores que X . Si dos strings tienen los mismos valores, ordénelas en el orden lexicográfico de la string.

Ejemplos:

Entrada: X = 79, str = «Geek 78 para 99 Geeks 88 Gfg 86»
Salida:
para 99 Geeks 88 Gfg 86
Explicación:
«Eve 99» se elimina, ya que el número asociado a él es menor que X (= 79)
Ahora , la string reordenada basada en el orden decreciente de los números asociados es «Bob 99 Suzy 88 Alice 86».

Entrada: X = 77, str = “Axc 78 Czt 60”
Salida: Axc 78

Planteamiento: La idea es utilizar la técnica Bubble Sort . Siga los pasos a continuación para resolver el problema:

  • Divida la string en una lista , luego elimine las entradas que son menores que el valor dado, es decir , X.
  • Ordene la lista según el número asociado con ella utilizando el método de clasificación de burbujas.
  • Si los números no son iguales, ordene los números en orden decreciente y al mismo tiempo ordene los nombres.
  • Si los números son iguales, ordénelos lexicográficamente.
  • Intercambia las cuerdas y el número juntos para mantenerlos juntos.

A continuación se muestra la implementación del enfoque anterior:

Python3

# Python Program to implement
# the above approach
  
# Function to split the input
# string into a list
def tokenizer(Str):
    List = Str.split()
    return List
  
# Function to sort the given list based
# on values at odd indices of the list
def SortListByOddIndices(List, x):
  
    l = len(List)
  
# Function to remove the values
# less than the given value x
    for i in range(l - 1, 0, -2):
        if int(List[i]) < x:
            del(List[i - 1: i + 1])
  
    l = len(List)
  
    for i in range(1, l, 2):
        for j in range(1, l - i, 2):
  
            # Compares values at odd indices of
            # the list to sort the list
            if List[j] < List[j + 2] \
            or (List[j - 1] > List[j + 1] \
            and List[j] == List[j + 2]):
                  
                List[j], List[j + 2] \
                = List[j + 2], List[j]
                  
                List[j - 1], List[j + 1] \
                = List[j + 1], List[j - 1]
  
    return ' '.join(List)
  
  
# Driver Code
Str = "Axc 78 Czy 60"
x = 77
  
# Function call
List = tokenizer(Str)
  
Str = SortListByOddIndices(List, x)
  
print(Str)
Producción:

Axc 78

Tiempo Complejidad: O(N 2 )
Espacio Auxiliar: O(N)

Publicación traducida automáticamente

Artículo escrito por prernaajitgupta 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 *