JAVA括号配对问题(要用栈来解决)要求输入一行字符,输出配对的括号和不配对的括号的位置例如:输入: (a+b))( 输出: 左边第1位括号和左边第5位括号对应,左边第6位括号没对应左
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/23 07:04:28
JAVA括号配对问题(要用栈来解决)要求输入一行字符,输出配对的括号和不配对的括号的位置例如:输入: (a+b))( 输出: 左边第1位括号和左边第5位括号对应,左边第6位括号没对应左
JAVA括号配对问题(要用栈来解决)
要求输入一行字符,输出配对的括号和不配对的括号的位置
例如:输入: (a+b))(
输出: 左边第1位括号和左边第5位括号对应,左边第6位括号没对应左括号,左边第7位没对应右括号.
求各位大虾帮忙写出完整JAVA程序代码(相信不难),本人有赏
括号配对问题
JAVA括号配对问题(要用栈来解决)要求输入一行字符,输出配对的括号和不配对的括号的位置例如:输入: (a+b))( 输出: 左边第1位括号和左边第5位括号对应,左边第6位括号没对应左
import java.util.Stack;
/**
* 要求输入一行字符,输出配对的括号和不配对的括号的位置
* 例如:
* 输入: (a+b))(
* 输出: 左边第1位括号和左边第5位括号对应,左边第6位括号没对应左括号,左边第7位没对应右括号.
*/
public class BaiduHelper {
public static void floatCloud(String toDeal){
Stack<Integer> stack = new Stack<Integer>();
stack.add(0);
for(int i=0; i<toDeal.length(); ++i){
char c = toDeal.charAt(i);
if(c=='('){
stack.add(i+1);
}else if(c==')'){
int index = stack.pop();
if(index>0){
System.out.println("左边第"+index+"位括号和左边第"+(i+1)+"位括号对应");
}else if(index==0){
System.out.println("左边第"+(i+1)+"位括号没对应左括号");
stack.add(0);
}
}
}
if(stack!=null){
while(!stack.isEmpty()){
int index = stack.pop();
if(index!=0)
System.out.println("左边第"+index+"位括号没对应右括号");
}
}
}
public static void main(String[] args){
floatCloud("(a+b))(");
System.out.println();
floatCloud("(a+(b))))(");
System.out.println();
floatCloud("(a+b))())(");
System.out.println();
}
}