Calculate maximum value using '+' or '*' sign between two numbers in a string
Last Updated :
15 Sep, 2023
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>
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.
Similar Reads
Calculate sum of all numbers present in a string Given a string S containing alphanumeric characters, The task is to calculate the sum of all numbers present in the string. Examples: Input: 1abc23Output: 24Explanation: 1 + 23 = 24 Input: geeks4geeksOutput: 4 Input: 1abc2x30yz67Output: 100 Recommended PracticeSum of numbers in stringTry It!Approach
13 min read
Sum of minimum and the maximum difference between two given Strings Given two strings S1 and S2 of the same length. The task is to find the sum of the minimum and the maximum difference between two given strings if you are allowed to replace the character '+' in the strings with any other character.Note: If two strings have the same characters at every index, then t
8 min read
Add two numbers using ++ and/or -- Given two numbers, return a sum of them without using operators + and/or -, and using ++ and/or --.Examples: Input: x = 10, y = 5 Output: 15 Input: x = 10, y = -5 Output: 10 We strongly recommend you to minimize your browser and try this yourself first The idea is to do y times x++, if y is positive
4 min read
To find sum of two numbers without using any operator Write a program to find sum of positive integers without using any operator. Only use of printf() is allowed. No other library function can be used.Solution It's a trick question. We can use printf() to find sum of two numbers as printf() returns the number of characters printed. The width field in
9 min read
Sum of two large numbers as Strings Given two numbers as strings. The numbers may be very large (may not fit in long long int), the task is to find sum of these two numbers.Examples: Input: s1 = "23", s2 = "25"Output: "48"Input: s1 = "00", s2 = "000"Output: "0"Input: s1 = "10000000", s2 = "89990000"Output: 99990000One by One Adding Di
7 min read