Dado un entero positivo N y un dígito K , la tarea es encontrar el valor máximo del número dado N insertando el dígito dado K en él N .
Ejemplos:
Entrada: N = 6673, K = 6
Salida: 66763
Explicación:
Todos los números formados al insertar K en cualquier posición en N son {66673, 66763, 66736}. El máximo entre todos los números formados es 66763.Entrada: N = 1234, K = 5
Salida: 51234
Enfoque: el problema dado se puede resolver insertando K en esa posición donde el siguiente dígito es más pequeño que K. Siga los pasos a continuación para resolver el problema:
- Inicialice dos strings , digamos S , encasillando el número dado N en una string y un resultado de string como «» para almacenar el número máximo posible después de insertar K en él.
- Inicialice dos variables, digamos L como la longitud de la string S e i como 0 .
- Recorra la string S hasta que K sea menor que S[i] y agregue el carácter S[i] a la string result .
- Ahora agregue K al resultado y luego agregue todos los caracteres restantes de la string al resultado .
- Después de completar los pasos anteriores, imprima el resultado de la string y el número máximo posible.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to find the maximum value // of N after inserting the digit K void maximizeNumber(int N, int K) { // Convert it into N to string string s = to_string(N); int L = s.length(); // Stores the maximum value of N // after inserting K string result; int i = 0; // Iterate till all digits that // are not less than K while ((i < L) && (K <= (s[i] - '0'))) { // Add the current digit to // the string result result.push_back(s[i]); ++i; } // Add digit 'K' to result result.push_back(char(K + '0')); // Iterate through all remaining // characters while (i < L) { // Add current digit to result result.push_back(s[i]); ++i; } // Print the maximum number formed cout << result; } // Driver Code int main() { int N = 6673, K = 6; maximizeNumber(N, K); return 0; }
Java
// Java program for the above approach class GFG { // Function to find the maximum value // of N after inserting the digit K public static void maximizeNumber(int N, int K) { // Convert it into N to string String s = Integer.toString(N); int L = s.length(); // Stores the maximum value of N // after inserting K String result = ""; int i = 0; // Iterate till all digits that // are not less than K while ((i < L) && (K <= ((int)s.charAt(i) - (int)'0'))) { // Add the current digit to // the string result result += (s.charAt(i)); ++i; } // Add digit 'K' to result result += ((char)(K + (int)'0')); // Iterate through all remaining // characters while (i < L) { // Add current digit to result result += (s.charAt(i)); ++i; } // Print the maximum number formed System.out.println(result); } // Driver Code public static void main (String args[]) { int N = 6673, K = 6; maximizeNumber(N, K); } } // This code is contributed by _saurabh_Jaiswal.
Python3
# Python 3 program for the above approach # Function to find the maximum value # of N after inserting the digit K def maximizeNumber(N, K): # Convert it into N to string s = str(N) L = len(s) # Stores the maximum value of N # after inserting K result = "" i = 0 # Iterate till all digits that # are not less than K while ((i < L) and (K <= (ord(s[i]) - ord('0')))): # Add the current digit to # the string result result += (s[i]) i += 1 # Add digit 'K' to result result += (chr(K + ord('0'))) # Iterate through all remaining # characters while (i < L): # Add current digit to result result += (s[i]) i += 1 # Print the maximum number formed print(result) # Driver Code if __name__ == "__main__": N = 6673 K = 6 maximizeNumber(N, K) # This code is contributed by ukasp.
C#
// C# program for above approach using System; class GFG{ // Function to find the maximum value // of N after inserting the digit K public static void maximizeNumber(int N, int K) { // Convert it into N to string String s = N.ToString(); int L = s.Length; // Stores the maximum value of N // after inserting K string result = ""; int i = 0; // Iterate till all digits that // are not less than K while ((i < L) && (K <= ((int)s[i]- (int)'0'))) { // Add the current digit to // the string result result += (s[i]); ++i; } // Add digit 'K' to result result += ((char)(K + (int)'0')); // Iterate through all remaining // characters while (i < L) { // Add current digit to result result += (s[i]); ++i; } // Print the maximum number formed Console.Write(result); } // Driver Code static void Main() { int N = 6673, K = 6; maximizeNumber(N, K); } } // This code is contributed by sanjoy_62.
Javascript
<script> // Javascript program for the above approach // Function to find the maximum value // of N after inserting the digit K function maximizeNumber(N, K) { // Convert it into N to string let s = String(N); let L = s.length; // Stores the maximum value of N // after inserting K let result = []; let i = 0; // Iterate till all digits that // are not less than K while ((i < L) && (K <= (s[i].charCodeAt(0) - '0'.charCodeAt(0)))) { // Add the current digit to // the string result result.push(s[i]); ++i; } // Add digit 'K' to result result.push(String.fromCharCode(K + '0'.charCodeAt(0))); // Iterate through all remaining // characters while (i < L) { // Add current digit to result result.push(s[i]); ++i; } // Print the maximum number formed document.write(result.join("")); } // Driver Code let N = 6673, K = 6; maximizeNumber(N, K); // This code is contributed by gfgking. </script>
66763
Complejidad temporal: O(N)
Espacio auxiliar: O(N)
Publicación traducida automáticamente
Artículo escrito por shreyasshetty788 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA