Imprima el entero más grande formado al insertar el dígito X en la string dada

Dada una string S de tamaño N que representa un valor entero grande y un dígito positivo X , la tarea es imprimir el entero más grande formado al insertar el dígito X en la string S .

Ejemplos:

Entrada: S = “99”, X = 9
Salida: 999
Explicación: 
El número más grande que se puede formar es 999 después de insertar 9 en “99”.

Entrada: S = “-13”, X = 2
Salida: -123
Explicación: 
El número más grande que se puede formar es -123 después de insertar 2 en “-13”.

Enfoque: el problema se puede resolver iterando sobre el carácter de la string S . Siga los pasos a continuación para resolver este problema:

  • Si el número S es positivo, realice los siguientes pasos:
    • Iterar en el rango [0, N-1] usando la variable i y realizar los siguientes pasos :
      • Si S[i] es menor que X , inserte el dígito X antes de S[i] y rompa el bucle .
    • Si ninguno de los casos anteriores satisface, agregue el dígito X al final de la string S .
  • De lo contrario, si el número S es negativo, realice los siguientes pasos:
    • Iterar en el rango [0, N-1] al usar la variable i y realizar los siguientes pasos:
      • Si S[i] es menor que X , inserte el dígito X antes de S[i] y rompa el bucle.
    • Si ninguno de los casos anteriores satisface, agregue el dígito X al final de la string S .
  • Finalmente, imprima la string más grande posible, representada por S .

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

Python3

# Python program for the above approach
  
# Function to find Largest Number after
# insertion of a digit
def largestValue(S, X):
  
    # If S is negative
    if S[0] == '-':
        f = 0
        # Iterate through characters of S
        for i, val in enumerate(S):
            if i == 0:
                continue
  
            # If digit x is less
            # than S[i] insert digit
            # after X
            if X < int(val):
                f = 1
                S = S[:i] + str(X) + S[i:]
                break
  
        if f == 0:
            S = S + str(X)
  
    # If S is positive
    else:
        f = 0
  
        # If x > S[i] insert x
        for i, val in enumerate(S):
            if X > int(val):
                f = 1
                S = S[:i] + str(X) + S[i:]
                break
  
        if f == 0:
            S = S + str(X)
  
    # Return the answer
    return S
  
  
# Driver Code
  
# Given Input
S = "-13"
X = 2
  
# Funtion Call
print(largestValue(S, X))
Producción

-123

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

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