美文网首页
[LeetCode] Valid Parentheses

[LeetCode] Valid Parentheses

作者: lalulalula | 来源:发表于2017-11-22 19:33 被阅读0次

    1.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.

    2.题目要求:判断给出的string中,括号是不是一一对应的,比如 ( ) 或者 { } [ ] ( )算合法的括号,(] 或者 ( [ ) ] 都不合法。

    3.方法:用一个Stack来存储括号, 遍历传入的string,如果遇到左括号就入栈;如果遇到右括号,检查栈如果为空,证明不能匹配,如果栈不空,pop出栈顶的元素,看是否与当前的右括号匹配。如果匹配,继续向下进行新一轮的循环,如果不匹配,返回false。

    4.代码:
    class Solution {
    public:
    bool isValid(string s) {
    stack<char> paren;
    for (char& c : s) {
    switch (c) {
    case '(':
    case '{':
    case '[': paren.push(c); break;
    case ')': if (paren.empty() || paren.top()!='(') return false; else paren.pop(); break;
    case '}': if (paren.empty() || paren.top()!='{') return false; else paren.pop(); break;
    case ']': if (paren.empty() || paren.top()!='[') return false; else paren.pop(); break;
    default: ; // pass
    }
    }
    return paren.empty() ;
    }
    };

    相关文章

      网友评论

          本文标题:[LeetCode] Valid Parentheses

          本文链接:https://www.haomeiwen.com/subject/bgpovxtx.html