队列与栈_栈结构的应用

发布时间:2014-10-22 18:35:13
来源:分享查询网

栈结构很有用处,有时通过它可以轻松化解一些难题。 看如下问题: ...(.[...)...]...(..(.)..)..{..}.[.]...[[...(.).]..]. 请判断一个串中的括号是否匹配 注意下列不匹配的情况: 左括号太多 右括号太多 右括号先于左括号出现 ..)...(... 挎臂情况 ....[...(....]....).... 考虑用栈 import java.util.ArrayDeque; import java.util.Deque; import java.util.Scanner; public class StackTest { public static void main(String[] args) { Deque<Character> stack = new ArrayDeque<Character>(); Scanner sc = new Scanner(System.in); System.out.println("请输入一行表达式:"); String str = sc.nextLine(); boolean flag = true; char ch; for(int i = 0; i < str.length(); i++) { ch = str.charAt(i); if(ch == '(' || ch == '[' || ch == '{') { stack.offerFirst(ch); } else if(ch == ')') { if(stack.peekFirst() != null && stack.peekFirst() == '(') { stack.pollFirst(); } else { flag = false; break; } } else if(ch == ']') { if(stack.peekFirst() != null && stack.peekFirst() == '[') { stack.pollFirst(); } else { flag = false; break; } } else if(ch == '}') { if(stack.peekFirst() != null && stack.peekFirst() == '{') { stack.pollFirst(); } else { flag = false; break; } } } if(flag) { flag = stack.isEmpty(); } System.out.println("是否匹配:" + flag); } }结果: Conclusion 请输入一行表达式: a+b[ddd](2014) 是否匹配:true 请输入一行表达式: {[123]}9[))] 是否匹配:false

返回顶部
查看电脑版