码迷,mamicode.com
首页 > 其他好文 > 详细

Valid Parentheses -- leetcode

时间:2014-12-25 16:25:57      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:leetcode   面试   parentheses   stack   括号   

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.


class Solution {
public:
    bool isValid(string s) {
        stack<char, vector<char> > lifo;
        lifo.push('#');

        for (size_t i=0; i<s.size(); i++) {
                if (s[i] == '{' ||
                    s[i] == '[' ||
                    s[i] == '(')
                        lifo.push(s[i]);
                else {
                        const char ch = lifo.top();
                        lifo.pop();
                        if ((s[i] == '}' && ch != '{') ||
                            (s[i] == ']' && ch != '[') ||
                            (s[i] == ')' && ch != '('))
                                return false;
                }
        }

        lifo.pop();
        return lifo.empty();
    }
};

提前进栈一个字符,省得循环中检查栈空了。

在leetcode上的运行时间为4ms。


Valid Parentheses -- leetcode

标签:leetcode   面试   parentheses   stack   括号   

原文地址:http://blog.csdn.net/elton_xiao/article/details/42146993

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!