算法(Algorithms)第4版 练习 1.3.4
2017-03-07 14:18
232 查看
主要思路:
遇到左括号则一直压栈,遇到右括号时则从栈中弹出一个元素。
如果此时栈为空,则返回false。
如果这个元素与右括号不匹配,则返回false。
重复此过程,最后判断栈是否为空,若为空则返回true,否则返回false。
代码实现:
测试结果:
遇到左括号则一直压栈,遇到右括号时则从栈中弹出一个元素。
如果此时栈为空,则返回false。
如果这个元素与右括号不匹配,则返回false。
重复此过程,最后判断栈是否为空,若为空则返回true,否则返回false。
代码实现:
//1.3.4 //parentheses package com.qiusongde; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; public class Parentheses { private static final char LEFT_PAREN = '('; private static final char RIGHT_PAREN = ')'; private static final char LEFT_BRACE = '{'; private static final char RIGHT_BRACE = '}'; private static final char LEFT_BRACKET = '['; private static final char RIGHT_BRACKET = ']'; public static void main(String[] args) { String input = StdIn.readAll().trim(); StdOut.println("input:" + input); StdOut.println(isParenBalanced(input)); } public static boolean isParenBalanced(String input) { Stack<Character> stack = new Stack<Character>(); for(int i = 0; i < input.length(); i++) { char pare = input.charAt(i); if(pare == LEFT_PAREN) stack.push(pare); if(pare == LEFT_BRACE) stack.push(pare); if(pare == LEFT_BRACKET) stack.push(pare); if(pare == RIGHT_PAREN) { if(stack.isEmpty()) return false; if(stack.pop() != LEFT_PAREN) return false; } if(pare == RIGHT_BRACE) { if(stack.isEmpty()) return false; if(stack.pop() != LEFT_BRACE) return false; } if(pare == RIGHT_BRACKET) { if(stack.isEmpty()) return false; if(stack.pop() != LEFT_BRACKET) return false; } } if(stack.isEmpty()) return true; else return false; } }
测试结果:
相关文章推荐
- 算法(Algorithms)第4版 练习 2.2.9
- 算法(Algorithms)第4版 练习 2.3.25
- 算法(Algorithms)第4版 练习 1.3.32
- 算法(Algorithms)第4版 练习 1.4.5
- 算法(Algorithms)第4版 练习 1.5.4
- 算法(Algorithms)第4版 练习 2.1.25
- 算法(Algorithms)第4版 练习 1.3.25 1.3.24
- 算法(Algorithms)第4版 练习 1.5.1
- 算法(Algorithms)第4版 练习 1.5.13
- 算法(Algorithms)第4版 练习 2.2.11(最终)
- 算法(Algorithms)第4版 练习 2.2.23
- 算法(Algorithms)第4版 练习 1.3.27 1.3.28
- 算法(Algorithms)第4版 练习 1.3.15
- 算法(Algorithms)第4版 练习 1.4.6
- 算法(Algorithms)第4版 练习 1.5.9
- 算法(Algorithms)第4版 练习 2.1.24
- 算法(Algorithms)第4版 练习 1.3.23 1.3.22
- 算法(Algorithms)第4版 练习 1.3.21
- 算法(Algorithms)第4版 练习 1.3.14
- 算法(Algorithms)第4版 练习 1.3.6