当前位置: 首页 > 知识库问答 >
问题:

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

司信厚
2023-03-14

我有下一个带嵌套括号的字符串:

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

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

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

共有1个答案

吴举
2023-03-14

我认为下面的代码应该可以工作:


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

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();
            }
        }   
    }
}

输出:
灰色(红色(蓝色))(蓝色)((橙色)绿色)(橙色)

 类似资料: