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

• Difficulty Level : Easy
• Last Updated : 28 Apr, 2021

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.```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

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++

 `// C++ program to find maximum value``#include ` `using` `namespace` `std;` `// Function to calculate the value``int` `calcMaxValue(string str)``{``    ``// Store first character as integer``    ``// in result``    ``int` `res = str -``'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'``;``    ` `        ``// 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

 ``

## Javascript

 ``

Output:

`82`

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=5745795300065280
This article is contributed by Sahil Chhabra. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.