[LeetCode20]Valid Parentheses

来源:互联网 发布:cpi数据 编辑:程序博客网 时间:2024/05/31 19:41

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

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

Analysis:

The idea is to use stack to store and match () {} [],

when meet ( { [ push it into stack, meet ) } ] compare and pop stack

Java:

public boolean isValid(String s) {        int len = s.length();        if(len<=1||len%2==1) return false;        Stack<Character> pare = new Stack<>();        for(int i=0;i<len;i++){        if(s.charAt(i)=='('||s.charAt(i)=='['||s.charAt(i)=='{'){        pare.push(s.charAt(i));        }        else {if(pare.empty())return false;else {char top = pare.peek();if((s.charAt(i)==')'&&top=='(')||(s.charAt(i)==']'&&top=='[')||(s.charAt(i)=='}'&&top=='{'))pare.pop();}}        }        if(pare.empty()) return true;        else return false;    }
c++

bool isValid(string s) {        if(s.size()%2 == 1 || s.size() == 0)        return false;    vector<char> sta;    sta.push_back(s[0]);    for(int i=1; i< s.size(); i++){        if(s[i] == '(' || s[i]=='[' || s[i]=='{'){            sta.push_back(s[i]);            continue;           }        char current = sta.back();        if(s[i] == ')' && current != '(' )            return false;        if(s[i] == ']' && current != '[')            return false;        if(s[i] == '}' && current != '{')            return false;        sta.pop_back();    }    if(sta.size() != 0 ) return false;    return true;    }



0 0
原创粉丝点击