1. 题目来源
链接:合法括号序列判断
来源:牛客网
2. 题目说明
对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。
给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。
示例1
输入
“(()())”,6
输出
返回:true
示例2
输入
“()a()()”,7
输出
返回:false
示例3
输入
“()(()()”,7
输出
返回:false
3. 题目解析
本题十分常见,在学习数据结构中为“栈”的最典型例题之一。具体需要用栈结构实现,栈中存放左括号,当遇到右括号之后,检查栈中是否有左括号,如果有则出栈,如果没有, 则说明不匹配。
4. 代码展示
class Parenthesis {
public:
bool chkParenthesis(string A, int n) {
// write code here
stack<char> sc;
for (auto ele : A) {
switch (ele) {
case '(':
sc.push(ele);
break;
case ')': {
if (sc.empty() || sc.top() != '(')
return false;
else
sc.pop();
}
break;
default:
return false;
}
}
return true;
}
};