Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从嵌套括号中获取数据?_Java_Arrays_String_Nested_Parentheses - Fatal编程技术网

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

Java 如何从嵌套括号中获取数据?,java,arrays,string,nested,parentheses,Java,Arrays,String,Nested,Parentheses,我有下一个带嵌套括号的字符串: String a = "(red(blue))grey((orange)green)"; 我想用打印出来的每个括号的值填充一个数组: (red(blue)) (blue) grey ((orange)green) (orange) //In any order 我认为下面的代码应该可以工作: 算法:首先使用堆栈标记左括号的结束位置,然后在下一次迭代中标记左括号的开始位置和结束位置 import java.util.*; import java.lang.*;

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

String a = "(red(blue))grey((orange)green)";
我想用打印出来的每个括号的值填充一个数组:

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

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


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

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();
            }
        }   
    }
}
import java.util.*;
导入java.lang.*;
导入java.io.*;
表意文字
{
公共静态void main(字符串[]args)引发java.lang.Exception
{
字符串s=“(红色(蓝色))灰色((橙色)绿色)”;
int n=s.长度();
int end[]=新的int[n];
布尔值=假;
堆栈=新堆栈();
对于(int i=0;i对于(int j=i;j我将在这里给出一种方法,您可以使用堆栈将每个字符插入其中。假设(..)->命名为容器,每个容器包含容器,依此类推。如果您遇到(插入堆栈继续,直到遇到“')字符,当您遇到)字符弹出直到“('和create container object insert into stack和list要显示这将对您的问题有效,您应该显示您已尝试过的内容,以便我们可以看到您实际尝试过的内容