题目:
Given a string containing just the characters
'('
,')'
,'{'
,'}'
,'['
and']'
, determine if the input string is valid.
An input string is valid if:
1.Open brackets must be closed by the same type of brackets.
2.Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
Example 1:Input: "()" Output: true
Example 2:
Input: "()[]{}" Output: true
Example 3:
Input: "(]" Output: false
Example 4:
Input: "([)]" Output: false
Example 5:
Input: "{[]}" Output: true
解释:
看到这种括号匹配的问题,就应该直接想到栈哦~
需要用到字典,注意把右括号当做是键哦~
python代码:
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
if len(s)%2!=0:
return False
_dict={')':'(',']':'[','}':'{'}
stack=[]
for char in s:
if char not in _dict:
stack.append(char)
else:
if stack==[] or _dict[char]!=stack.pop() :
return False
return stack==[]
c++代码:
#include<map>
#include<stack>
using namespace std;
class Solution {
public:
bool isValid(string s) {
map<char,char>_map;
stack<char>_stack;
_map[')']='(';
_map[']']='[';
_map['}']='{';
for(auto letter:s)
{
if(!_map.count(letter))
_stack.push(letter);
else
{
if (_stack.empty())
return false;
char tmp=_stack.top();
_stack.pop();
if (tmp!=_map[letter])
return false;
}
}
return _stack.empty();
}
};
总结:
看到括号匹配的问题就想到栈和字典 就对了。