Loading

leetcode#20 Valid Parentheses

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

有效字符串需满足:

1 左括号必须用相同类型的右括号闭合。
2 左括号必须以正确的顺序闭合。
示例 1:

输入: "()"
输出: true
示例 2:

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

输入: "(]"
输出: false
示例 4:

输入: "([)]"
输出: false
示例 5:

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


class Solution {
public:
    bool isPair(char c1,char c2){
        if((c1=='('&&c2==')')||(c1=='['&&c2==']')||(c1=='{'&&c2=='}'))
            return true;
        swap(c1,c2);
        if((c1=='('&&c2==')')||(c1=='['&&c2==']')||(c1=='{'&&c2=='}'))
            return true;
        return false;
    }

    bool isValid(string s) {//用栈最直观,顺序容器都可以
        stack<char> stack1;
        for(int i=0;i!=s.size();++i)
        {
            char c=s[i];
            if(c=='('||c=='['||c=='{')
                stack1.push(c);
            else{
                if(stack1.empty()) return false;
                if(isPair(c,stack1.top()))
                    stack1.pop();
                else
                    stack1.push(c);
            }
        }
        if(!stack1.empty()) return false;
        return true;
    }

};

 

posted @ 2018-09-28 21:15  老鼠阿尔吉侬  阅读(116)  评论(0编辑  收藏  举报