JAVA括号配对问题(要用栈来解决)

2024-12-27 16:17:20
推荐回答(2个)
回答1:

import java.util.Stack;

/**

 * 要求输入一行字符,输出配对的括号和不配对的括号的位置

 * 例如:

 *   输入:  (a+b))(

 *   输出: 左边第1位括号和左边第5位括号对应,左边第6位括号没对应左括号,左边第7位没对应右括号。

 */

public class BaiduHelper {

 

 public static void floatCloud(String toDeal){

  Stack stack = new Stack();

  stack.add(0);

  for(int i=0; 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();

 }

}

回答2:

这个确实不难,可是本人不会。