题目描述:
给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。
解题思路:
使用栈。当遇到括号的左半边时,直接入栈,当遇到右半边时,判断栈顶元素是不是和右半边对应的括号,若不是,返回false,若是,弹出栈顶元素,进行下一个判断。
class Solution {
public:
/**
*
* @param s string字符串
* @return bool布尔型
*/
bool isValid(string s) {
int len=s.size();
if(len==0||len%2!=0)return false;
stack<char> p;
for(int i=0;i<len;i++){
if(s[i]=='('||s[i]=='{'||s[i]=='['){
p.push(s[i]);
}
else if(!p.empty()&&s[i]==')'){
if(p.top()!='(')
return false;
else p.pop();
}
else if(!p.empty()&&s[i]=='}'){
if(p.top()!='{')
return false;
else p.pop();
}
else if(!p.empty()&&s[i]==']'){
if(p.top()!='[')
return false;
else p.pop();
}
}
return p.empty();
}
};
【未来不迎】