【LeetCode】20. Valid Parentheses

Description: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.

思路:用堆栈。

1.括号总是成对出现的,遇到左括号进栈

2.遇到右括号则与栈顶符号比较,匹配则栈顶出栈

3.重复

代码如下:

class Solution {
public:
	bool isValid(string s)
	{
        if(s.size()==1)
            return false;
		stack<char> st;
		for (int i = 0; i<s.size(); i++)
		{
			if ((s[i] == '(') || (s[i] == '[') || (s[i] == '{'))
				st.push(s[i]);
			else
			{
                 if(st.empty())
                    return false;
                
				if (s[i] == ')' && !st.empty() && st.top() == '(')
					st.pop();
				else if (s[i] == ')' && st.top() != '(' )
					return false;
                
				if (s[i] == ']' && !st.empty() && st.top() == '[')
					st.pop();
				else if (s[i] == ']' && st.top() != '[')
					return false;
                
				if (s[i] == '}' && !st.empty() && st.top() == '{')
					st.pop();
				else if (s[i] == '}' && st.top() != '{')
					return false;
                
               
			}
		}
        if(st.empty())
		    return true;
        else
            return false;

	}
};

关于堆栈的用法

点击打开链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值