一道盛大的面试题
16lz
2021-01-22
有一字符串格式如下:(A(B)(C(D)(E))F) 字符串中的括号成对出现,写一java函数取出第N(以左括号出现的顺序来索引)对括号里的内容。
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 ""; } }