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