关于栈的应用-括号匹配问题的两种解题思路
2016-12-05 11:21
295 查看
1.解法1的思路是:先把字符串转换为数组,然后遍历数组,一旦遇到 左括号,则将它压入栈中,然后依次先对( [ {进行匹配顺序的判断,最后进行括号数量的判断,具体代码如下:
2.解法2的适用场合是:单纯的括号表达式,不包含数字等的情况。 思路是:每次都将栈顶元素出栈,如果有匹配,则不做任何处理,即栈中少了1个元素。如果无匹配,这将已经出栈的的内容“归还”于栈中,然后将当前与栈顶元素不匹配的数组[i]元素也亚入栈中。最后判断栈空不空,如果空,则表示栈中所有的元素都匹配成功,如果非空,则说中栈中还有元素匹配不成功。 注意:不用担心) 在( 之前出现的情况,即右括号早与左括号之前先压入栈中,因为如果先遇到右括号而未遇到左括号,无论如何也不可能匹配成功,即栈中的先出现的右括号永远是在栈中的,所以匹配不成功。具体代码如下:
public static void signCheck(String exp)throws Exception { MyStack stack = new MyStack(); String[] arr = Test.toStringArray(exp); for(int i=0;i
2.解法2的适用场合是:单纯的括号表达式,不包含数字等的情况。 思路是:每次都将栈顶元素出栈,如果有匹配,则不做任何处理,即栈中少了1个元素。如果无匹配,这将已经出栈的的内容“归还”于栈中,然后将当前与栈顶元素不匹配的数组[i]元素也亚入栈中。最后判断栈空不空,如果空,则表示栈中所有的元素都匹配成功,如果非空,则说中栈中还有元素匹配不成功。 注意:不用担心) 在( 之前出现的情况,即右括号早与左括号之前先压入栈中,因为如果先遇到右括号而未遇到左括号,无论如何也不可能匹配成功,即栈中的先出现的右括号永远是在栈中的,所以匹配不成功。具体代码如下:
public static void main(String[] args){ //使用字符类Character声明泛型 MyArrayStackms=new MyArrayStack(); String s="{{}}()(){({){}}}"; char[] a=s.toCharArray(); for(int i=0;i
相关文章推荐
- 【顶】关于广义积分中,提常数后积分,解题思路致命误差问题
- coding - 关于括号匹配的问题
- 数据结构(8)--栈的应用之行编辑程序、括号匹配检验、数制转换、hanio塔问题
- Iframe的基础应用——关于Iframe刷页问题的两种方法
- 关于第5周括号匹配问题的修改方案
- 数据结构之SeqStack---堆栈应用---括号匹配问题
- 关于正则表达式^和小括号()匹配导致重复项的问题
- 算法——括号匹配问题(堆栈应用)
- 数据结构之栈的应用:括号匹配问题
- 括号匹配问题解题报告
- ACM训练题(关于括号匹配问题)
- RS485串行总线可靠性的研究 关于RS485工程应用可能遇到的问题及其解决思路
- 关于括号匹配的问题及其源码
- nyoj 括号匹配问题(栈的应用)
- 关于一道括号匹配问题
- 关于括号匹配问题
- 关于发布WP 8.1应用信息不匹配问题的解决办法
- Iframe的基础应用——关于Iframe刷页问题的两种方法
- 题目1153:括号匹配问题(栈的应用)
- c语言栈的应用之括号匹配问题