Compruebe si la expresión contiene corchetes redundantes o no | conjunto 2

Dada una string de expresión equilibrada, encuentre si contiene un paréntesis redundante o no. Un conjunto de paréntesis es redundante si la misma subexpresión está rodeada por corchetes innecesarios o múltiples. Escriba ‘Sí’ si es redundante, de lo contrario ‘No’.
Nota: La expresión puede contener operadores ‘+’ , ‘*’ , ‘–’ y ‘/’ . La expresión dada es válida y no hay espacios en blanco presentes.
Nota: El problema está destinado a resolverse en O(1) espacio adicional.
Ejemplos:
 

Entrada: ((a+b)) 
Salida: SI
((a+b)) puede reducirse a (a+b)
Entrada: (a+(b)/c) 
Salida: SI
(a+(b)/c) puede reducirse a (a+b/c) porque b está rodeada por() que es redundante
Entrada: (a+b*(cd)) 
Salida: NO
(a+b*(cd)) no tiene corchetes redundantes o múltiples
 

Enfoque: 
la idea es muy similar a la idea discutida en el artículo anterior, pero aquí, en lugar de la pila, contamos el símbolo ( ‘+’ , ‘*’ , ‘–’ y ‘/’ ) y el número total de corchetes utilizados en la expresión.
Si el número de paréntesis no es igual al número de símbolos, la función devolverá falso. 
 

C++

// C++ program to check for/
// redundant braces in the string
#include <iostream>
using namespace std;
 
// Function to check for
// redundant braces
bool IsRedundantBraces(string A)
{
    // count of no of signs
    int a = 0, b = 0;
    for (int i = 0; i < A.size(); i++) {
        if (i + 2 < A.size() && A[i] == '('
            && A[i + 2] == ')')
            return 1;
        if (A[i] == '*'
            || A[i] == '+'
            || A[i] == '-'
            || A[i] == '/')
            a++;
        if (A[i] == '(')
            b++;
    }
    if (b > a)
        return 1;
    return 0;
}
 
// Driver function
int main()
{
    string A = "(((a+b) + c) + d)";
    if (IsRedundantBraces(A)) {
        cout << "YES\n";
    }
    else {
        cout << "NO";
    }
}

Java

// Java program to check for
// redundant braces in the string
class GFG
{
     
    // Function to check for
    // redundant braces
    static boolean IsRedundantBraces(String A)
    {
        // count of no of signs
        int a = 0, b = 0;
        for (int i = 0; i < A.length(); i++)
        {
            if (A.charAt(i) == '(' &&  
                A.charAt(i + 2) == ')')
                return true;
                 
            if (A.charAt(i) == '*' ||
                A.charAt(i) == '+' ||
                A.charAt(i) == '-' ||
                A.charAt(i) == '/')
                a++;
            if (A.charAt(i) == '(')
                b++;
        }
        if (b > a)
            return true;
        return false;
    }
     
    // Driver Code
    public static void main (String[] args)
    {
        String A = "(((a+b) + c) + d)";
        if (IsRedundantBraces(A))
        {
            System.out.println("YES");
        }
        else
        {
            System.out.println("NO");
        }
    }
}
 
// This code is contributed by AnkitRai01

Python3

# Python3 program to check for/
# redundant braces in the string
 
# Function to check for
# redundant braces
def IsRedundantBraces(A):
     
    # count of no of signs
    a, b = 0, 0;
    for i in range(len(A)):
        if (A[i] == '(' and A[i + 2] == ')'):
            return True;
        if (A[i] == '*' or A[i] == '+' or
            A[i] == '-' or A[i] == '/'):
            a += 1;
        if (A[i] == '('):
            b += 1;
     
    if (b > a):
        return True;
    return False;
 
# Driver Code
if __name__ == '__main__':
    A = "(((a+b) + c) + d)";
    if (IsRedundantBraces(A)):
        print("YES");
     
    else:
        print("NO");
     
# This code is contributed by PrinciRaj1992

C#

// C# program to check for
// redundant braces in the string
using System;
                     
class GFG
{
     
// Function to check for
// redundant braces
static bool IsRedundantBraces(string A)
{
    // count of no of signs
    int a = 0, b = 0;
    for (int i = 0; i < A.Length; i++)
    {
        if (A[i] == '(' && A[i + 2] == ')')
            return true;
        if (A[i] == '*' || A[i] == '+' ||
            A[i] == '-' || A[i] == '/')
            a++;
        if (A[i] == '(')
            b++;
    }
    if (b > a)
        return true;
    return false;
}
     
// Driver Code
public static void Main (String[] args)
{
    String A = "(((a+b) + c) + d)";
    if (IsRedundantBraces(A))
    {
        Console.WriteLine("YES");
    }
    else
    {
        Console.WriteLine("NO");
    }
}
}
 
// This code is contributed by PrinciRaj1992

Javascript

<script>
    // Javascript program to check for
    // redundant braces in the string
     
    // Function to check for
    // redundant braces
    function IsRedundantBraces(A)
    {
        // count of no of signs
        let a = 0, b = 0;
        for (let i = 0; i < A.length; i++)
        {
            if (A[i] == '(' && A[i + 2] == ')')
                return true;
            if (A[i] == '*' || A[i] == '+' ||
                A[i] == '-' || A[i] == '/')
                a++;
            if (A[i] == '(')
                b++;
        }
        if (b > a)
            return true;
        return false;
    }
     
    let A = "(((a+b) + c) + d)";
    if (IsRedundantBraces(A))
    {
        document.write("YES");
    }
    else
    {
        document.write("NO");
    }
 
// This code is contributed by divyeshrabadiya07.
</script>
Producción: 

NO

 

Publicación traducida automáticamente

Artículo escrito por md1844 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 *