刚学到数据结构,奇怪的是第一次找不到这类的视频了,一搜全是C语言的,书上又说的不够清楚。
这个题目一眼看到我就会联想到去用String的方法或数组来解答,书上用栈来解答说明这是栈的一个典型用法,那么能体现栈的什么优点呢?
书上的解题代码:
Stack ss =new SequenceStack();//定义栈对象 String s="111(222)333; int size=s.length(); boolean flag =false; for(int i=0;i<size;i++){ char c=s.charAt(i); switch(c){ case 40://左括号“(” ss.push("(");//入栈 break; case 41://右括号“)” if(ss.pop().equals(")"){ flag=true; } } } System.out.print("括号配对为:"+flag);
书上有分析说“可以使用栈来存储字符串中的小括号。遍历字符串中的每个字符,遇到‘(’则入栈,遇到‘)’则出栈,查看出栈的元素是否为‘)’,如果为‘)’则配对,否则不配对”。如果字符串就只有这么半个括号,flag不也是为true吗,但事实半个括号明显是不完整的,都不成对,就更谈不上配对了啊。还有上面的分析里说左括号进栈我理解,右括号出栈我就不理解了,不要它可以不让它进栈,可是根本没让它进栈过又怎么让它出栈呢?
所谓难者不会,会者不难,我在这上面浪费很多时间了,请各位高手帮忙指点迷津,谢谢了!
Caballarii
相关分类