Dada una string de expresión exp, escriba un programa para examinar si los pares y los órdenes de “{“, “}”, “(“, “)”, “[“, “]” son correctos en exp.
Ejemplo :
Entrada : exp = “[()]{}{[()()]()}”
Salida : BalanceadaEntrada : exp = “[(])”
Salida : No balanceada
Algoritmo:
- Declara una pila de caracteres S.
- Ahora recorra la string de expresión exp.
- Si el carácter actual es un corchete de inicio ( ‘(‘ o ‘{‘ o ‘[‘ ) entonces empújelo para apilar.
- Si el carácter actual es un corchete de cierre ( ‘)’ o ‘}’ o ‘]’ ), entonces salte de la pila y si el carácter reventado es el corchete de inicio correspondiente, entonces bien, de lo contrario, los corchetes no están equilibrados.
- Después de completar el recorrido, si queda algún soporte inicial en la pila, entonces «no está equilibrado»
La imagen de abajo es una ejecución en seco del enfoque anterior:
A continuación se muestra la implementación del enfoque anterior:
C++
// CPP program to check for balanced brackets. #include <bits/stdc++.h> using namespace std; // function to check if brackets are balanced bool areBracketsBalanced(string expr) { stack<char> s; char x; // Traversing the Expression for (int i = 0; i < expr.length(); i++) { if (expr[i] == '(' || expr[i] == '[' || expr[i] == '{') { // Push the element in the stack s.push(expr[i]); continue; } // IF current current character is not opening // bracket, then it must be closing. So stack // cannot be empty at this point. if (s.empty()) return false; switch (expr[i]) { case ')': // Store the top element in a x = s.top(); s.pop(); if (x == '{' || x == '[') return false; break; case '}': // Store the top element in b x = s.top(); s.pop(); if (x == '(' || x == '[') return false; break; case ']': // Store the top element in c x = s.top(); s.pop(); if (x == '(' || x == '{') return false; break; } } // Check Empty Stack return (s.empty()); } // Driver code int main() { string expr = "{()}[]"; // Function call if (areBracketsBalanced(expr)) cout << "Balanced"; else cout << "Not Balanced"; return 0; }
Balanced
Complejidad de Tiempo: O(n)
Espacio Auxiliar: O(n) para pila.
¡Consulte el artículo completo sobre Verificación de paréntesis equilibrados en una expresión (bien formado) usando Stack para obtener más detalles!
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