LeetCode: Valid Parentheses 解题报告
2024-10-19 00:20:48
Valid Parentheses
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.
SOLUTION1:
使用stack来解决的简单题目。所有的字符依次入栈
1. 遇到成对的括号弹栈,弹栈不成对返回false.
2. 栈为空只能压入左括号
3. 扫描完成时,栈应该为空,否则返回FALSE.
SOLUTION 2:
使用堆栈解决,比较简单。push右括号时,检查左括号在不在,如果不在,返回false,否则弹出一个左括号。
最后看栈是否为空,不为空代表括号数不对称,也要返回false;
public class Solution {
public boolean isValid(String s) {
if (s == null) {
return false;
} int len = s.length(); // bug 1: don't use s as the name of the stack.
Stack<Character> stk = new Stack<Character>(); for (int i = 0; i < len; i++) {
char c = s.charAt(i);
switch(c) {
case '(':
case '[':
case '{':
stk.push(c);
break;
case ')':
if (!stk.isEmpty() && stk.peek() == '(') {
stk.pop();
} else {
return false;
}
break;
case '}':
if (!stk.isEmpty() && stk.peek() == '{') {
stk.pop();
} else {
return false;
}
break;
case ']':
if (!stk.isEmpty() && stk.peek() == '[') {
stk.pop();
} else {
return false;
}
break;
}
} return stk.isEmpty();
}
}
https://github.com/yuzhangcmu/LeetCode_algorithm/blob/master/stack/IsValid.java
最新文章
- Linux C popen()函数详解
- Jquery动态操作checkbox
- [Android]使用Kotlin开发Android(二)
- centos7安装mplayer 错误集锦
- 3dmax导出3ds具有过多要导出的面超过64k解决方法
- SQL-PIVOT 数据透视 行列转换
- SOCKSify Ruby
- centos6 install mplayer(multimedia)
- git log友好显示
- [bzoj1002][FJOI2007 轮状病毒] (生成树计数+递推+高精度)
- Select标签 依据value值默认选中 Jquery
- java面向对象之 封装 Encapsulation
- css相关 细节 优化 备忘
- [数据结构]C语言队列的实现
- idea在springboot项目中没有【新建JSP选项】的解决方法
- Python Selenium系列学习
- 多线程thread的使用
- Python代码运行应该注意哪些问题?
- 使用JavaScript实现表现和数据分离
- Spring中内置的一些工具类