一.题目要求
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
二.题目难度
简单
三.输入样例
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
提示:
1 <= s.length <= 104
s 仅由括号 ‘()[]{}’ 组成
四.解题思路
匹配右括号记得判空
五.代码实现
class Solution {
public:
bool isValid(string s) {
stack<char> stk;
for(string::iterator it = s.begin(); it != s.end(); it++)
{
if(*it == '{' || *it == '(' || *it == '[')
stk.push(*it);
if(*it == '}')
{
if(!stk.empty() && stk.top() == '{') stk.pop();
else stk.push(*it);
}
if(*it == ']')
{
if(!stk.empty() && stk.top() == '[') stk.pop();
else stk.push(*it);
}
if(*it == ')')
{
if(!stk.empty() && stk.top() == '(') stk.pop();
else stk.push(*it);
}
}
return stk.empty();
}
};
六.题目总结
–