今天网易实习生招聘中的笔试有一道是关于栈的应用,应用场景为括号匹配。由于习惯使用IDE而现场考试环境为 普通编辑器,擦,考试写着按Ctrl+I能够自动联想代码,
我去,用不了 感觉自己写的并不怎么样
现在 自己回来写了一遍
输入一串字符串“()【】{}”组成,判断是否括号匹配
在我的代码中 可以连续无限次的输入测试用例
下面是代码
package bracker; import java.util.Scanner; import java.util.Stack; /* * 输入一串字符,右“()【】{}”组成,判断是否匹配 * 思路:1 将输入存入到一串字符串中 * 2 将字符串按照顺序存入到栈中, 存的时候将元素和栈顶的元素对比,假如相同则弹栈 * 3 当遍历完字符串之后,判断栈是否为空 */ public class bracketMatching { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()){ String str = scanner.next(); Stack<Character> stack = new Stack<Character>(); for(int i=0;i<str.length();i++){ if(stack.isEmpty()) stack.push(str.charAt(i)); else if(str.charAt(i)==')' && stack.peek()=='(' || str.charAt(i)==']' && stack.peek()=='[' || str.charAt(i)=='}' && stack.peek()=='{') stack.pop(); else stack.push(str.charAt(i)); } if(stack.isEmpty()) System.out.println("true"); else System.out.println("false"); } scanner.close(); } }
总结一下吧 1 关于scanner.next的用法
2 关于判断要压栈的元素同栈顶元素的比较