一、题目
题目描述
给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。
示例1
输入
"["
返回值
false
示例2
输入
"[]"
返回值
true
二、解题思路
1、利用栈来解决
1.1 如果碰到’(’、 ‘{’、 ‘[’,就往栈里添加’)’、 ‘}’ 、’]’
1.2 判断新的一个是否和top()相同,如果不相同或者栈为空,则返回false
2、注意判断字符串个数要能整除2
3、要注意全都都是左括号的情况,通过最后判断栈是否为空来判断
三、代码实现
class Solution {
public:
/**
*
* @param s string字符串
* @return bool布尔型
*/
bool isValid(string s) {
if(s.length()%2 !=0)
{
return false;
}
stack<char>S;
for(int i=0;i<s.length();++i)
{
if(s[i]=='(')
{
S.push(')');
}
else if(s[i]=='{')
{
S.push('}');
}
else if(s[i]=='[')
{
S.push(']');
}
else if(S.empty() || s[i] !=S.top())
{
return false;
}
else if(s[i] ==S.top())
{
S.pop();
}
}
if(S.empty())
{
return true;
}
else
{
return false;
}
}
};