Dada una string S de tamaño N , que representa un entero grande. La tarea es encontrar el entero par de mayor valor , que es una substring no vacía de S. Si no se puede formar un entero par, devuelva una string vacía.
Ejemplos:
Entrada: S = “4206”
Salida: “4206”
Explicación: “4206” ya es un número par.Entrada: S = «23»
Salida: «2»
Explicación: «Las únicas substrings no vacías son «2», «3» y «23». “2” es el único número par.Entrada: S = «17»
Salida: «»
Explicación: No hay una substring de valor par en la string dada
Enfoque: la tarea se puede resolver encontrando el primer carácter par de la derecha , digamos, se encuentra en un índice ‘ idx ‘. La substring no vacía de valor par más grande
resultante sería la substring de S en el rango [0, idx] .
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 largest even valued // substring void get(string& s) { int N = s.length(); int idx = -1; // Finding the rightmost even character for (int i = N - 1; i >= 0; i--) { if ((s[i] - '0') % 2 == 0) { idx = i; break; } } if (idx == -1) cout << ""; else cout << s.substr(0, idx + 1); } // Driver Code int main() { string S = "4206"; get(S); return 0; }
Java
// Java program for the above approach import java.io.*; import java.lang.*; import java.util.*; class GFG { // Function to find the largest even valued // substring static void get(String s) { int N = s.length(); int idx = -1; // Finding the rightmost even character for (int i = N - 1; i >= 0; i--) { if ((s.charAt(i) - '0') % 2 == 0) { idx = i; break; } } if (idx == -1) System.out.print(""); else System.out.print(s.substring(0, idx + 1)); } // Driver Code public static void main (String[] args) { String S = "4206"; get(S); } } // This code is contributed by hrithikgarg03188.
Python3
# Python code for the above approach # Function to find the largest even valued # substring def get(s): N = len(s); idx = -1; # Finding the rightmost even character for i in range(N - 1, 0, -1): if ((ord(s[i]) - ord('0')) % 2 == 0): idx = i; break; if (idx == -1): print(""); else: print(s[0: idx + 1]); # Driver Code S = "4206"; get(S); # This code is contributed by gfgking
C#
// C# program for the above approach using System; class GFG { // Function to find the largest even valued // substring static void get(string s) { int N = s.Length; int idx = -1; // Finding the rightmost even character for (int i = N - 1; i >= 0; i--) { if ((s[i] - '0') % 2 == 0) { idx = i; break; } } if (idx == -1) Console.Write(""); else Console.Write(s.Substring(0, idx + 1)); } // Driver Code public static void Main () { string S = "4206"; get(S); } } // This code is contributed by Samim Hossain Mondal.
Javascript
<script> // JavaScript code for the above approach // Function to find the largest even valued // substring function get(s) { let N = s.length; let idx = -1; // Finding the rightmost even character for (let i = N - 1; i >= 0; i--) { if ((s[i].charCodeAt(0) - '0'.charCodeAt(0)) % 2 == 0) { idx = i; break; } } if (idx == -1) document.write(""); else document.write(s.slice(0, idx + 1)); } // Driver Code let S = "4206"; get(S); // This code is contributed by Potta Lokesh </script>
4206
Complejidad de Tiempo : O(N)
Espacio Auxiliar : O(1)
Publicación traducida automáticamente
Artículo escrito por sauarbhyadav y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA