Calculate maximum value using ‘+’ or ‘*’ sign between two numbers in a string

16 Jun, 2022
Given a string of numbers, the task is to find the maximum value from the string, you can add a ‘+’ or ‘*’ sign between any two numbers.Examples:  
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.
Asked in : Facebook 
The task is pretty simple as we can get the maximum value on multiplying all values but the point is to handle the case of 0 and 1 i.e. On multiplying with 0 and 1 we get the lower value as compared to on adding with 0 and 1. So, use ‘*’ sign between any two numbers(except numbers containing 0 and 1) and use ‘+’ if any of the numbers is 0 and 1. 
C++
Java
Python3
C#
PHP
Javascript
// C++ program to find maximum value#include <bits/stdc++.h> using namespace std; // Function to calculate the valueint 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 codeint main(){    string str = "01891";    cout << calcMaxValue(str);    return 0;}
// 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));    }}
# Python program to find maximum value # Function to calculate the valuedef 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 codeif __name__== "__main__":    str = "01891";    print(calcMaxValue(str));     # This code is contributed by Sairahul Jella
//C# program to find maximum valueusing 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 program to find// maximum value // Function to calculate// the valuefunction 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?>
<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>
Output:  
82
Time complexity : O(n) Auxiliary Space : O(1)
Above program consider the case of small inputs i.e. up to which C/C++ can handle the range of maximum value.Reference : https://www.careercup.com/question?id=5745795300065280This article is contributed by Sahil Chhabra. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
jit_t
Imam
MorganNewman
Sairahul Jella
Shivam_k
divyeshrabadiya07
a7977370173
Facebook
Strings
Facebook
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.