题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()" 输出:true
示例 2:
输入:s = "()[]{}" 输出:true
思路:
利用栈的特性 遍历字符串
{
如果是左符号就入栈
如果为空就false
如果是右符号 就看是否和栈顶元素相同
{
如果不相同 就false 相同就弹出栈顶元素
}
}
栈为空就true
代码:
class Solution {
public:
bool isValid(string s) {
stack<char> myst;
for(int i = 0; i < s.size(); i++)
{
if(s[i] == '('||s[i] == '{' || s[i] == '[')
{
myst.push(s[i]);
}
else
{
if(myst.empty())return false;
if(myst.top() == '(' && s[i] != ')'||
myst.top() == '{' && s[i] != '}'||
myst.top() == '[' && s[i] != ']')
{
return false;
}
myst.pop();
}
}
if(myst.empty())
return true;
else
return false;
}
};