Lintcode423-Valid Parentheses-Easy
2024-09-21 05:52:35
思路:
数据结构:stack。遍历整个字符串,如果遇到左向括号( [ { 则入栈。如果遇到右向括号时,先检查栈是否为空,为空说明左右向括号数目不一致,返回false;不为空则弹出栈顶元素查看是否和右向括号匹配。遍历完,要return stack.isEmpty(); 确保栈内没有剩余。
代码:
public class Solution {
/**
* @param s: A string
* @return: whether the string is a valid parentheses
*/
public boolean isValidParentheses(String s) {
Stack<Character> st = new Stack<Character>(); for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '(' || c == '[' || c == '{') {
st.push(c);
}
if (c == ')' || c == ']' || c == '}') {
if (st.isEmpty()) {
return false;
}
char popChar = st.pop();
if ( c == ')' && popChar != ')') {
return false;
}
if ( c == ']' && popChar != ']') {
return false;
}
if ( c == '}' && popChar != '}' ) {
return false;
}
}
}
return st.isEmpty();
}
}
代码风格优化:String遍历每一个char(line 9) ; 用if-else分支更准确(line 10, 12)
public class Solution {
/**
* @param s: A string
* @return: whether the string is a valid parentheses
*/
public boolean isValidParentheses(String s) {
Stack<Character> st = new Stack<Character>(); for (Character c : s.toCharArray()) {
if (c == '(' || c == '[' || c == '{') {
st.push(c);
} else {
if (st.isEmpty()) {
return false;
}
char popChar = st.pop();
if ( c == ')' && popChar != '(') {
return false;
}
if ( c == ']' && popChar != '[') {
return false;
}
if ( c == '}' && popChar != '{') {
return false;
}
}
}
return st.isEmpty();
}
}
最新文章
- excel转json工具的制作(C#语言)
- IP地址,子网掩码、默认网关,DNS服务器是什么意思?
- linux随笔2
- ExtJs创建环境搭建
- Instance Variables in ruby
- poj 2749 2-SAT问题
- MapReduce——计算温度最大值 (基于全新2.2.0API)
- Codeforces 22B Bargaining Table
- jquery promot
- jvm监控命令介绍
- 20170711_map/reduce
- 关于ajax 进行post提交 json数据到controller
- windows环境下curl 安装和使用
- python之value和布尔值
- Python 中的Duck Typing
- Android 监听耳机的插拔事件
- Oracle 的分页查询 SQL 语句
- oracle使用connect by进行级联查询 树型菜单
- Python参数传递(传值&;传引用)
- Python语言的高级特性