经典指数          
原因
2332
浏览数
0
收藏数
 

假设有如下字符串: (234453)[234]{2324} 现在,要求编程分析其括号配对是否正确。请自行选择下列两种方案之一实现该程序: 方案一:不考虑括号优先级,只考虑配对正确性;方案二:考虑括号优先级,比如{1[2(3)4]5} 是正确的。但是[1{2}3]是不正确的。

     举报   纠错  
 
切换
1 个答案

跟楼上的方案类似,也是使用数据结构栈来解决,与解析xml一样,有开始标签结束标签。

public static boolean check1(String str) {

Stack stack = new 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;

}

 
切换
撰写答案