[leetcode]Valid Parentheses

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.

#include <iostream>
#include <string>
#include <stack>
#include <map>
using namespace std;
class Solution {
private:
		map<char,char> pairs;
		stack<int> pstack;
public:
	Solution()
	{
		pairs[')'] = '(';
		pairs['}'] = '{';
		pairs[']'] = '[';
	}
    bool isValid(string s) {
		int len = s.length();
		if(len%2)return false;
        int i = 0;
		map<char,char>::iterator it;
		char sen;
		for(i = 0; i < len; i++){
			it = pairs.find(s[i]);
			
			if(it == pairs.end()){
				pstack.push(s[i]);
				continue;
			}
			sen = it ->second;
			if(!pstack.empty()){
				char tmp = pstack.top();
				if(tmp == sen){
					pstack.pop();
				}else{
					return false;
				}
			}else{
				return false;
			}
		}
		if(pstack.empty())return true;
		return false;
    }
};
int main()
{
	Solution s = Solution();
	cout << s.isValid("[{}]{{}()}") << endl;
	return 0;
}

  

posted @ 2015-01-24 00:17  山楂条子  阅读(166)  评论(0编辑  收藏  举报