假设有如下字符串: (234453)[234]{2324} 现在,要求编程分析其括号配对是否正确。请自行选择下列两种方案之一实现该程序: 方案一:不考虑括号优先级,只考虑配对正确性;方案二:考虑括号优先级,比如{1[2(3)4]5} 是正确的。但是[1{2}3]是不正确的。
跟楼上的方案类似,也是使用数据结构栈来解决,与解析xml一样,有开始标签结束标签。
public static boolean check1(String str) {
Stack
char[] charArr = str.toCharArray();
for(int i=0; charArr!=null && i if("{}[]()".indexOf(charArr[i])>-1) { if(stack.size()==0) { stack.push(String.valueOf(charArr[i])); } else { String top = stack.peek(); String tmp = top + charArr[i]; if("{}[]()".indexOf(tmp)>-1) { stack.pop(); } else { stack.push(String.valueOf(charArr[i])); } // 方案2与方案1不同的就是,在这个地方加一个优先级判断 if("([{".indexOf(tmp)>-1 || "({".indexOf(tmp)>-1) return false; } } } return stack==null || stack.size()==0?true:false; }