20-有效的括号
leetcode题解——有效的括号
题目如下
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
解题思路
- 首先判断第一个括号,若不是左括号,则直接结束
- 否则,开始遍历括号串,用栈做辅助
- 每当碰到一个左括号,就入栈
- 否则,若栈顶是匹配当前右括号的左括号,则出栈
- 当整个括号串遍历结束时
- 若栈空,则括号有效
- 否则,括号无效
//有效的括号
class Solution {
public:
bool isValid(string s) {
int i, n=s.size();
bool flag=false;
stack<char> st;
if(s[0]==')' || s[0]==']' || s[0]=='}'){
return false;
}
for(i=0; i<n; i++){
if(s[i]=='(' || s[i]=='[' || s[i]=='{'){
st.push(s[i]);
}else{
if(st.empty()){
return false;
}
if(s[i]==')'){
if(st.top()!='('){
return false;
}else{
st.pop();
}
}
if(s[i]==']'){
if(st.top()!='['){
return false;
}else{
st.pop();
}
}
if(s[i]=='}'){
if(st.top()!='{'){
return false;
}else{
st.pop();
}
}
}
}
if(st.empty()){
return true;
}else{
return false;
}
}
};
}

浙公网安备 33010602011771号