Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!
我的博客:<但凡.-CSDN博客
我的专栏:《编程之路》、《题海拾贝》、《数据结构与算法之美》
欢迎点赞、关注!
1、题目
2、题解
这个题目我们用c加加的stack来处理再合适不过。
我们把每个字符都去循环里判断一遍,把所有的左括号存进stack里,如果是右括号的话就判断栈顶上的那个是不是匹配的左括号,如果不是直接返回假,如果是那就删除顶上的。
最后出循环后我们在判断一下还有没有剩余元素,没剩就是都有匹配的,有剩就是有没匹配上的括号。
class Solution {
public:bool isValid(string s) {stack<int> st;for(auto ch:s){if(ch=='['||ch=='('||ch=='{'){st.push(ch);}else{if(st.empty()) {return false;}char left=st.top();if(ch==')'&&left!='(') { return false;}if(ch==']'&&left!='[') {return false;}if(ch=='}'&&left!='{') {return false;}st.pop();}}return st.empty();}
};
好了,今天的内容就分享到这,我们下期再见!