leetcode 20. Valid Parentheses

Given a string containing just the characters ‘(’, ‘)’, ‘{’, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.

An input string is valid if:

Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.

Example 1:

Input: “()”
Output: true
Example 2:

Input: “()[]{}”
Output: true
Example 3:

Input: “(]”
Output: false
Example 4:

Input: “([)]”
Output: false
Example 5:

Input: “{[]}”
Output: true

括号匹配,用栈做。

class Solution {
public:
    bool isValid(string s) {
        vector<char> t;
        int n=s.length(),i=0;
        unordered_map<char,char> m;
        m['(']=')';m['[']=']';m['{']='}';
        while(i<n){
            if(s[i]=='('||s[i]=='['||s[i]=='{')
                t.push_back(s[i]);
            if(s[i]==')'||s[i]==']'||s[i]=='}'){
                if(t.empty())return false;
                char c=t.back();t.pop_back();
                if(m[c]!=s[i])return false;
            }
            i++;
        }
        if(t.empty())return true;
        return false;
    }
};
posted @ 2020-05-23 22:24  winechord  阅读(57)  评论(0编辑  收藏  举报