很简单的一道题,以前习惯用C式C++编程,现在尝试用C++容器,感觉效率高了不少。
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.
class Solution {
public:
bool isValid(string s) {
map<char,char > aMap;
aMap.insert ( pair<char,char>('(',')') );
aMap.insert ( pair<char,char>('{','}') );
aMap.insert ( pair<char,char>('[',']') );
set<char> aSet;
aSet.insert(')');
aSet.insert('}');
aSet.insert(']');
stack<char> aStack;
for(int i = 0; i < s.size(); i++) {
if(aMap.find(s[i]) != aMap.end() ) {
aStack.push(s[i]);
}else if(aSet.find(s[i]) != aSet.end()) {
if(aStack.empty())
return false;
if(aMap[aStack.top()] != s[i])
return false;
aStack.pop();
}
}
if(aStack.empty())
return true;
else
return false;
}
};