栈巧妙应用到括号匹配
//check for balanced parentheses
//括号匹配问 题
#include <stack>
bool Check_balanced_parenthesis(char* arr, int n) {
std::stack<char> Sta;
for (int i = 0; i < n; ++i) {
if (arr[i] == '(' || arr[i] == '[' || arr[i] == '{') {
Sta.push(arr[i]);
}
else if (arr[i] == ')' || arr[i] == ']' || arr[i] == '}') {
// 如果栈为空,或者栈顶元素与当前字符不匹配,则括号不平衡
if (Sta.empty() ||
(arr[i] == ')' && Sta.top() != '(') ||
(arr[i] == ']' && Sta.top() != '[') ||
(arr[i] == '}' && Sta.top() != '{')) {
return false;
}
Sta.pop(); // 匹配成功,将栈顶元素出栈
}
}
// 如果栈为空,则表示所有括号都匹配
return Sta.empty();
}