leetcode题记——Valid Parentheses
来源:互联网 发布:如何使用淘宝客推广 编辑:程序博客网 时间:2024/05/29 02:50
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.
思路:使用栈结构存储'('或'['或'{',一旦发现这三者中的某一个,使用push函数入栈;仅判断后半括号的情况,遇到任意一种后半括号时,取出栈顶元素(需先判断栈是否为空)判断是否与其对称,对称的话,则将对称的该元素pop出;使用f1,f2,f3记录后半括号的情况,若出现过,则记为1,出现过且配对成功,重新设置为0;最后判断栈是否为空已经三个f值的情况,判断输入的字符串是否合法。
class Solution { public boolean isValid(String s) { char[] t;t = s.toCharArray(); int f1=0,f2=0,f3=0;Stack<Character> con = new Stack();for (int i = 0; i < t.length; i++) {if (t[i] == '(' || t[i] == '[' || t[i] == '{') {con.push(t[i]);} else if (t[i] == ')'){ f1=1;if (!con.isEmpty()&&con.peek() == '('){ con.pop(); f1=0; }}else if (t[i] == '}'){ f2=1;if (!con.isEmpty()&&con.peek() == '{'){ con.pop(); f2=0; }}else if (t[i] == ']'){ f3=1;if (!con.isEmpty()&&con.peek() == '['){ con.pop(); f3=0; }}}if (con.isEmpty()&&f1==0&&f2==0&&f3==0)return true;elsereturn false; }}
/**
* push : 把项压入堆栈顶部 ,并作为此函数的值返回该对象
* pop : 移除堆栈顶部的对象,并作为此函数的值返回该对象
* peek :查看堆栈顶部的对象,,并作为此函数的值返回该对象,但不从堆栈中移除它
* empty : 测试堆栈是否为空
*/
阅读全文
0 0
- leetcode题记——Valid Parentheses
- Leetcode刷题记——20. Valid Parentheses (有效的括号即括号匹配)
- Leetcode刷题记——32. Longest Valid Parentheses(最长有效括号)
- LeetCode——Valid Parentheses
- 【leetcode】20—valid parentheses
- Python学习——leetcode(Valid Parentheses)
- leetcode 020 —— Valid Parentheses
- LeetCode题解——Valid Parentheses
- leetcode 032 —— Longest Valid Parentheses
- leetcode题集——longest-valid-parentheses
- LeetCode——20. Valid Parentheses
- Leetcode——32. Longest Valid Parentheses
- Leetcode——20. Valid Parentheses
- Leetcode Problem.20—Valid Parentheses
- LeetCode 之 Valid Parentheses — C++ 实现
- LeetCode—32 Longest Valid Parentheses
- 【LeetCode】LeetCode——第20题:Valid Parentheses
- leetcode——20——Valid Parentheses
- leetcode#7-Reverse Integer-java
- javase
- 十进制转二至九之间任一进制输出(c++)
- python调试方法
- Jupyter Notebook 的快捷键
- leetcode题记——Valid Parentheses
- Mybatis通用Mapper
- java设计模式之外观
- U-Boot启动过程完全分析
- 11. Container With Most Water
- 使用JavaScript实现制作网页随机验证码
- Linux开发环境搭建和常用指令
- freemarker用法
- Java:基本的数据类型等