Leetcode 20. Valid Parentheses
2017-01-26 07:16
344 查看
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.
s思路:
1. 就是找对称,这种题用stack啊。
The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not.
s思路:
1. 就是找对称,这种题用stack啊。
//方法1:太多的判断了,代码一点都不简洁。当if很多,可以自然想到能否应用方式减少判断 class Solution { public: bool isValid(string s) { //stack找配对,没有配对,就往里放,找到配对就往外弹。 if(s.empty()) return true; stack<char> ss; for(auto k:s){ if(ss.empty()&&(k==')'||k=='}'||k==']')) return false; if(k=='('||k=='{'||k=='[') ss.push(k); else if(ss.top()!='('&&k==')'||k=='}'&&ss.top()!='{'||ss.top()!='['&&k==']'){ return false; }else ss.pop(); } return ss.empty(); } }; //方法1:由于操作的符号都是有限域内的限定的数字,即:都是0-255内的,所以用符号间的差表示相当关系即可!!!妙!也就是用求差的方法来模拟括号的关系!! class Solution { public: bool isValid(string s) { //stack找配对,没有配对,就往里放,找到配对就往外弹。 if(s.empty()) return true; stack<char> ss; for(auto k:s){ if(!ss.empty()&&(k-ss.top()==1||k-ss.top()==2)) ss.pop(); else ss.push(k); } return ss.empty(); } };
相关文章推荐
- C#创建安全的栈(Stack)存储结构
- java 实现 stack详解及实例代码
- C++ STL容器stack和queue详解
- Mysql Error Code : 1436 Thread stack overrun
- 基于java中stack与heap的区别,java中的垃圾回收机制的相关介绍
- Python算法之栈(stack)的实现
- Stack数据结构的特点后进先出的应用:大数据运算
- C 堆栈,运行时类型挷定
- jstack和线程dump分析
- c语言stack实现--数据域与指针域分开
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- 深入Java虚拟机
- 搭建CloudStack
- 新手,正在学Java Collection,瞎写点东西-一个基于链表的stack及其遍历
- leetcode刷题,没想到这么难搞!
- 日志监控_ElasticStack-0002.Logstash编码插件及实际生产案例应用?
- 日志监控_ElasticStack-0003.Logstash输入插件及实际生产案例应用?