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

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.

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