标签: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