Calcule el valor máximo usando el signo ‘+’ o ‘*’ entre dos números en una string

Dada una string de números, la tarea es encontrar el valor máximo de la string, puede agregar un signo ‘+’ o ‘*’ entre dos números cualesquiera.

Ejemplos: 

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.

Preguntado en: Facebook

La tarea es bastante simple ya que podemos obtener el valor máximo al multiplicar todos los valores, pero el punto es manejar el caso de 0 y 1, es decir, al multiplicar con 0 y 1 obtenemos el valor más bajo en comparación con la suma de 0 y 1. 

Por lo tanto, use el signo ‘*’ entre dos números (excepto los números que contienen 0 y 1) y use ‘+’ si alguno de los números es 0 y 1.

Implementación:

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>
Producción

82

Complejidad temporal : O(n) 
Espacio auxiliar : O(1)

El programa anterior considera el caso de entradas pequeñas, es decir, hasta las cuales C/C++ puede manejar el rango de valor máximo.

Este artículo es una contribución de Sahil Chhabra . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *