Dada una string de números, la tarea es encontrar el valor máximo de la string, puede agregar un signo ‘+’ o ‘*’ entre dos números cualesquiera.
Ejemplos:
Input : 01231 Output : ((((0 + 1) + 2) * 3) + 1) = 10 In above manner, we get the maximum value i.e. 10 Input : 891 Output :73 As 8*9*1 = 72 and 8*9+1 = 73.So, 73 is maximum.
Preguntado en: Facebook
La tarea es bastante simple ya que podemos obtener el valor máximo al multiplicar todos los valores, pero el punto es manejar el caso de 0 y 1, es decir, al multiplicar con 0 y 1 obtenemos el valor más bajo en comparación con la suma de 0 y 1.
Por lo tanto, use el signo ‘*’ entre dos números (excepto los números que contienen 0 y 1) y use ‘+’ si alguno de los números es 0 y 1.
Implementación:
C++
// C++ program to find maximum value #include <bits/stdc++.h> using namespace std; // Function to calculate the value int calcMaxValue(string str) { // Store first character as integer // in result int res = str[0] -'0'; // Start traversing the string for (int i = 1; i < str.length(); i++) { // Check if any of the two numbers // is 0 or 1, If yes then add current // element if (str[i] == '0' || str[i] == '1' || res < 2 ) res += (str[i]-'0'); // Else multiply else res *= (str[i]-'0'); } // Return maximum value return res; } // Drivers code int main() { string str = "01891"; cout << calcMaxValue(str); return 0; }
Java
// Java program to find maximum value public class GFG { // Method to calculate the value static int calcMaxValue(String str) { // Store first character as integer // in result int res = str.charAt(0) -'0'; // Start traversing the string for (int i = 1; i < str.length(); i++) { // Check if any of the two numbers // is 0 or 1, If yes then add current // element if (str.charAt(i) == '0' || str.charAt(i) == '1' || res < 2 ) res += (str.charAt(i)-'0'); // Else multiply else res *= (str.charAt(i)-'0'); } // Return maximum value return res; } // Driver Method public static void main(String[] args) { String str = "01891"; System.out.println(calcMaxValue(str)); } }
Python3
# Python program to find maximum value # Function to calculate the value def calcMaxValue(str): # Store first character as integer # in result res = ord(str[0]) - 48 # Start traversing the string for i in range(1, len(str)): # Check if any of the two numbers # is 0 or 1, If yes then add current # element if(str[i] == '0' or str[i] == '1' or res < 2): res += ord(str[i]) - 48 else: res *= ord(str[i]) - 48 return res # Driver code if __name__== "__main__": str = "01891"; print(calcMaxValue(str)); # This code is contributed by Sairahul Jella
C#
//C# program to find maximum value using System; class GFG { // Method to calculate the value static int calcMaxValue(String str) { // Store first character as integer // in result int res = str[0] -'0'; // Start traversing the string for (int i = 1; i < str.Length; i++) { // Check if any of the two numbers // is 0 or 1, If yes then add current // element if (str[i] == '0' || str[i] == '1' || res < 2 ) res += (str[i] - '0'); // Else multiply else res *= (str[i] - '0'); } // Return maximum value return res; } // Driver Code static public void Main () { String str = "01891"; Console.Write(calcMaxValue(str)); } } // This code is contributed by jit_t
PHP
<?php // PHP program to find // maximum value // Function to calculate // the value function calcMaxValue($str) { // Store first character // as integer in result $res = $str[0] - '0'; // Start traversing // the string for ($i = 1; $i < strlen($str); $i++) { // Check if any of the // two numbers is 0 or // 1, If yes then add // current element if ($str[$i] == '0' || $str[$i] == '1' || $res < 2 ) $res += ($str[$i] - '0'); // Else multiply else $res *= ($str[$i] - '0'); } // Return maximum value return $res; } // Driver code $str = "01891"; echo calcMaxValue($str); // This code is contributed by ajit ?>
Javascript
<script> // Javascript program to // find maximum value // Method to calculate the value function calcMaxValue(str) { // Store first character as integer // in result let res = str[0].charCodeAt() - '0'.charCodeAt(); // Start traversing the string for (let i = 1; i < str.length; i++) { // Check if any of the two numbers // is 0 or 1, If yes then add current // element if (str[i] == '0' || str[i] == '1' || res < 2 ) res += (str[i].charCodeAt() - '0'.charCodeAt()); // Else multiply else res *= (str[i].charCodeAt() - '0'.charCodeAt()); } // Return maximum value return res; } let str = "01891"; document.write(calcMaxValue(str)); </script>
82
Complejidad temporal : O(n)
Espacio auxiliar : O(1)
El programa anterior considera el caso de entradas pequeñas, es decir, hasta las cuales C/C++ puede manejar el rango de valor máximo.
Este artículo es una contribución de Sahil Chhabra . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
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