Leetcode 20. 有效的括号
题目
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
测试样例
1.
输入: "()"
输出: true
2.
输入: "()[]{}"
输出: true
3.
输入: "(]"
输出: false
4.
输入: "([)]"
输出: false
5.
输入: "{[]}"
输出: true
题解
使用栈即可,若左括号则入栈。右括号则与栈顶的括号进行匹配,匹配失败,则返回false。最终返回栈是否为空。
代码
bool isValid(string s) {
stack<char> sp;
int i,n=s.length();
for(i=0; i<n; i++){
if(s[i] == '(' || s[i] == '[' || s[i] == '{')
sp.push(s[i]);
else if(s[i] == ')'){
if(sp.empty() || sp.top() != '(') return false;
sp.pop();
}else if(s[i] == ']'){
if(sp.empty() || sp.top() != '[') return false;
sp.pop();
}else{
if(sp.empty() || sp.top() != '{') return false;
sp.pop();
}
}
if(sp.empty()) return true;
else return false;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
版权声明:本文为weixin_43750513原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。