日期:2014-05-20  浏览次数:20855 次

急,求java高手帮忙啊
有一字符串格式如下:(A(B)(C(D)(E))F) 字符串中的括号成对出现,写一java函数取出第N(以左括号出现的顺序来索引)对括号里的内容。

------解决方案--------------------
找第n个左括号的下边
这个是答案
------解决方案--------------------
上面的蓝字是链接啊
------解决方案--------------------
Java code

public class Csdn1 {
    public static void main(String[] args) {
        String str = "(A(B)(C(D)(E))F)";
        System.out.println(getContent(5, str));
    }
    
    public static String getContent(int n, String str) {
        
        int start = -1, end = 0;
        char[] arr = str.toCharArray();
        int count = 0, j = 0;
        
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == '(') {
                count++;
                if (count == n) {
                    start = i;//找到,记录开始位置
                    j = 0; // 开始位置重置
                }
                if (i >= start) {
                    j++; // 左( ++
                }
            }
            
            if (arr[i] == ')') {
                
                if (i >= start) {        //有开始位置才开始匹配结束
                    j--; // 右( --
                }

                if (j == 0) {         //左右括号匹配完成后记录结束位置并跳出循环
                    if (start == -1) {
                        System.out.println("第" + n + "个元素不存在!");
                    } else {
                        end = i + 1;
                        return str.substring(start, end);
                    }
                }
            }
        }
        return "";
    }
}