写点什么

leetcode20. 有效的括号

用户头像
Damien
关注
发布于: 2020 年 05 月 04 日

https://leetcode-cn.com/problems/valid-parentheses/

描述

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。



有效字符串需满足:



左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。



示例 1:

输入: "()"
输出: true




示例 2:

输入: "()[]{}"
输出: true




示例 3:

输入: "(]"
输出: false



示例 4:

输入: "([)]"
输出: false



示例 5:

输入: "{[]}"
输出: true

思路

如果是括号的左半边,直接入栈即可

如果是括号的右半边,需要与栈最上面的括号匹配,匹配失败直接返回false

for循环遍历结束后,判断栈是否为空,为空则表示所有的括号都已经匹配成功了

代码

class Solution {
public:
bool isValid(string s) {
stack<char> st;
for (char c: s) {
if (c == ')') {
if (!st.empty() && st.top() == '(') st.pop();
else return false;
} else if (c == '}') {
if (!st.empty() && st.top() == '{')st.pop();
else return false;
} else if (c == ']') {
if (!st.empty() && st.top() == '[')st.pop();
else return false;
} else st.push(c);
}
return st.empty();
}
};



发布于: 2020 年 05 月 04 日阅读数: 43
用户头像

Damien

关注

海阔凭鱼跃,天高任鸟飞 2020.02.28 加入

一个有趣的工程师。

评论

发布
暂无评论
leetcode20.有效的括号