Open In App

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

Improve
Improve
Like Article
Like
Save
Share
Report

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.

Implementation:

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>


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.

 



Last Updated : 15 Sep, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads