20. Valid Parentheses(python+cpp)
阿新 • • 發佈:2018-12-19
題目:
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();
}
};
總結: 看到括號匹配的問題就想到棧和字典 就對了。