博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法题:括号匹配(小中大括号序列)
阅读量:5094 次
发布时间:2019-06-13

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

括号序列由( )[ ]{ }组成,不合法的括号序列由( { ) },[ } { ],等等。编程实现一个函数,检查一个括号序列是否是合法的括号序列。

解法:

思路和“后缀表达式的求解”相似。我们借助栈,每读一个括号,如果是左括号,那么入栈,然后继续读下一个括号;如果是右括号,那么就要看看这个右括号和栈顶的括号是否匹配;如果匹配,那么弹出栈顶的括号,继续读下一个括号。当栈变空时,说明此括号序列是合法的。

 

public class Test05 { 	public static boolean isValid(String exp) {		String left = "([{";		String right = ")]}";		Stack
s = new Stack
(); for (int i = 0, len = exp.length(); i < len; i++) { char ch = exp.charAt(i); if (left.indexOf(ch) != -1) { s.push(ch); } else if (right.indexOf(ch) != -1) { if (!s.isEmpty()) { char temp = s.pop(); if (ch != right.charAt(left.indexOf(temp))) { return false; } } else { return false; } } } return s.isEmpty(); } public static void main(String[] args) { System.out.println(isValid("([()]{})")); System.out.println(isValid("((){}")); System.out.println(isValid("[{)()]")); } } 

  

转载于:https://www.cnblogs.com/jobbible/p/9945708.html

你可能感兴趣的文章
结对编程(四则运算题目生成器core第七组)对接心得
查看>>
树莓派双网卡配置
查看>>
linux关闭防火墙及selinux
查看>>
9.Spark Streaming
查看>>
hibernate反向生成
查看>>
零配置文件搭建SpringMvc
查看>>
模拟面试题一
查看>>
Hello World深入理解
查看>>
Lo4j(二)级别和优化
查看>>
Spoj MKTHNUM - K-th Number
查看>>
[BZOJ1060] [ZJOI2007]时态同步
查看>>
《架构之美》阅读笔记06
查看>>
beta-2阶段组员贡献分分配
查看>>
关于svn更新失败,clearup异常解决
查看>>
swiper,一个页面使用多个轮播
查看>>
poj2449:第k短路问题
查看>>
什么是设计模式 – 总结
查看>>
test-title
查看>>
职场险恶
查看>>
android 动画
查看>>