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

leetcode.20-----------Valid Parentheses

时间:2015-02-04 09:27:00      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:valid parentheses   leetcode   acm   算法   

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 const& s) {
		string left = "([{";
		string ringht = ")]}";
		stack<char> tmp;
		for (auto c : s)
		{
			if (left.find(c) != string::npos)
			{
				tmp.push(c);
			}
			else
			{
				if (tmp.empty() || tmp.top() != left[ringht.find(c)])//栈为空或着没有找到匹配的
					return false;
				else//找到匹配了 就弹出栈顶的元素
					tmp.pop();
			}
		}
		return tmp.empty();//如果遍历完了,栈里面还有元素说明没有完全匹配
	}
};


方法二:比较直接的匹配,直观一下就能看明白

class Solution {
public:
    bool isValid(string s) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        stack<char> stacks;
        for (int i = 0; i < s.size(); i++) {
            switch (s[i]) {
                case '(':
                case '[':
                case '{':
                    stacks.push(s[i]);
                    break;
                case ')':
                    if (stacks.empty() || stacks.top() != '(') {
                        return false;
                    }
                    stacks.pop();
                    break;
                case ']':
                    if (stacks.empty() || stacks.top() != '[') {
                        return false;
                    }
                    stacks.pop();
                    break;
                case '}':
                    if (stacks.empty() || stacks.top() != '{') {
                        return false;
                    }
                    stacks.pop();
                    break;
                default:
                    return false;
            }
        }
        return stacks.empty();
    }
};



leetcode.20-----------Valid Parentheses

标签:valid parentheses   leetcode   acm   算法   

原文地址:http://blog.csdn.net/chenxun_2010/article/details/43470909

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