博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法(Algorithms)第4版 练习 1.3.4
阅读量:6101 次
发布时间:2019-06-20

本文共 2018 字,大约阅读时间需要 6 分钟。

主要思路:

遇到左括号则一直压栈,遇到右括号时则从栈中弹出一个元素。

如果此时栈为空,则返回false。

如果这个元素与右括号不匹配,则返回false。

重复此过程,最后判断栈是否为空,若为空则返回true,否则返回false。

 

代码实现:

//1.3.4//parenthesespackage 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
stack = new Stack
(); 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; }}

 

测试结果:

转载于:https://www.cnblogs.com/songdechiu/p/6514515.html

你可能感兴趣的文章
面试总结
查看>>
Chrome浏览器播放HTML5音频没声音的解决方案
查看>>
easyui datagrid 行编辑功能
查看>>
类,对象与实例变量
查看>>
HDU 2818 (矢量并查集)
查看>>
【转】php字符串加密解密
查看>>
22. linux 常用命令
查看>>
ASP.Net 使用GridView模板删除一行的用法
查看>>
(十六)字段表集合
查看>>
JPGraph
查看>>
实验二 Java面向对象程序设计
查看>>
------__________________________9余数定理-__________ 1163______________
查看>>
webapp返回上一页 处理
查看>>
新安装的WAMP中phpmyadmin的密码问题
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第5周学习总结
查看>>
(转)HTML的代码(从朋友那转的,看着觉得会有用就转了)
查看>>
eclipse中将一个项目作为library导入另一个项目中
查看>>
Go语言学习(五)----- 数组
查看>>
Android源码学习之观察者模式应用
查看>>
Content Provider的权限
查看>>