20有效的括号 Posted on 2020-04-22 Words count in article: 263 | Reading time ≈ 1 下面是题目 下面是题目给出的代码123456class Solution {public: bool isValid(string s) { }}; 我第一时间觉得既然(){} []需要相互配对,为什么不用map存储呢?123456789101112131415161718192021222324252627282930//经过几次修改后,时间空间100%class Solution {public: bool isValid(string s) { map<char,char>m; m.insert(pair<char,char>('[',']')); m.insert(pair<char,char>('(',')')); m.insert(pair<char,char>('{','}')); stack<char>a; for(char n : s) {//如果是左半部分的括号的话,那么我们先把它入栈 if(n=='{'||n=='['||n=='(') a.push(n);//如果是右半部分的括号,先别着急,我们还要判断栈里面是不是有元素 else if (n=='}'||n==']'||n==')') { //有元素而且匹配上了,那么才能出栈 if (!a.empty()&&n==m[a.top()]) { a.pop(); } //任何一个条件不满足的话,就直接返回false else return false; } } //最后判断是否非空,如果栈内还有元素,说明false,要不然说明都对齐消除了 return !a.empty()? false:true; }}; -------------本文结束,感谢您的阅读------------- Post author: Jason Post link: https://jasonxqh.github.io/2020/04/22/20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7/ Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.