思路:

数据结构: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();
}
}

最新文章

  1. excel转json工具的制作(C#语言)
  2. IP地址,子网掩码、默认网关,DNS服务器是什么意思?
  3. linux随笔2
  4. ExtJs创建环境搭建
  5. Instance Variables in ruby
  6. poj 2749 2-SAT问题
  7. MapReduce——计算温度最大值 (基于全新2.2.0API)
  8. Codeforces 22B Bargaining Table
  9. jquery promot
  10. jvm监控命令介绍
  11. 20170711_map/reduce
  12. 关于ajax 进行post提交 json数据到controller
  13. windows环境下curl 安装和使用
  14. python之value和布尔值
  15. Python 中的Duck Typing
  16. Android 监听耳机的插拔事件
  17. Oracle 的分页查询 SQL 语句
  18. oracle使用connect by进行级联查询 树型菜单
  19. Python参数传递(传值&amp;传引用)
  20. Python语言的高级特性

热门文章

  1. Android基础总结+SQlite数据库【申明:来源于网络】
  2. Ubuntu 16.04 Java8 安装
  3. springboot+mybatis+druid数据库连接池
  4. oracle&amp;mysql配置
  5. tomcat配置内存
  6. ES6 Class 类
  7. &lt;c:forEach&gt;详解
  8. cocos2d-js:游戏进入后台和返回游戏的事件捕获和处理
  9. SQL Server 百万级数据提高查询速度的方法(转)
  10. POI 导出文档整理