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