20. Valid Parentheses(python+cpp)

题目:

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();
    }
};

总结:
看到括号匹配的问题就想到栈和字典 就对了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值