首页 > 其他 > 详细

20. Valid Parentheses

时间:2019-05-11 00:39:04      阅读:164      评论:0      收藏:0      [点我收藏+]

放个数组,遍历,左方框就加,右方框就减

三个数放个数组,最后三个数都是0,才是true,为负立即false

但是看relate是stack这个标签

不是很懂怎么和栈结合

bool isValid(string s) {
    stack<char> st;
    for(char c : s){        //遍历s里的char
        if(c == (|| c == { || c == [){
            st.push(c);
        }else{
            if(st.empty()) return false; 
            if(c == ) && st.top() != () return false;
            if(c == } && st.top() != {) return false;
            if(c == ] && st.top() != [) return false;
            st.pop();
        }
    }
    return st.empty();

看起来好像是我弄错description的意思了,我以为{[}]也是对的,不好好看

技术分享图片

 


 

else if那一坨

要我肯定考虑== 而不是!=
bool isValid(string s) {
        stack<char> st;
        for(char c:s){
            if(c==(||c=={||c==[)
                st.push(c);
        else{
            if(st.empty())return false;
            if(c == ) && st.top() == () {st.pop();continue;}
            if(c == } && st.top() == {)  {st.pop();continue;}
            if(c == ] && st.top() == [)   {st.pop();continue;}
            else return false;   //但是少了这句就是错的,,,
} } return st.empty(); }

 



 

for那里是新知道的

所以搜一搜

the difference between for(char& c : s) and for(char c : s)?

新知识

技术分享图片

由图可知因为copy成本太高,直接modify s,快一点,如果想保护s就const 

20. Valid Parentheses

原文:https://www.cnblogs.com/qvq-/p/10847153.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!