如何从嵌套括号中获取数据?

时间:2016-11-25 08:19:54

标签: java arrays string nested parentheses

我有下一个带有嵌套括号的String:

String a = "(red(blue))grey((orange)green)";

我想用一个数组填充打印出的每个括号的值:

(red(blue))
(blue)
grey
((orange)green)
(orange)
//In any order

1 个答案:

答案 0 :(得分:0)

我认为下面的代码应该有效:


算法:首先使用堆栈标记左括号的结束位置,然后在下一次迭代中使用开始位置和结束位置。

import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String s = "(red(blue))grey((orange)green)";
        int n = s.length();
        int end[] = new int[n];
        boolean internalWords = false;
        Stack<Integer> stack = new Stack<Integer>(); 
        for(int i = 0 ; i < n ; i++){
            if(s.charAt(i)=='('){
                stack.push(i);
            }else if(s.charAt(i)==')'){
                int start = (Integer)stack.pop();
                end[start] = i;
            }else if(stack.isEmpty()){
                System.out.print(s.charAt(i));
            }
        }
        System.out.println();
        for(int i = 0 ; i < n ; i++){
            if(s.charAt(i)=='('){

                for(int j = i ; j <= end[i]; j++){
                    System.out.print(s.charAt(j));
                }
                System.out.println();
            }
        }   
    }
}

out put:
grey (red(blue)) (blue) ((orange)green) (orange)