我的方法是用两个栈分别 1、 记录上一次左括号出现位置、索引坐标 2、对于非括号字符统计长度(方便反转),str 记录所有非括号字符 3、遍历右括号,判断是否有左括号,无返回 “” 4、存在左括号,对相应长度的字符进行反转 你可以照着我代码看一下,应该还是比较好理解的 // 用栈来判断括号是否匹配,str 记录非括号字符,每一对括号中的数翻转一次     static String resolve(String expr) {         Stack<Character> stack = new Stack<>();         Stack<Integer> reverse=new Stack<>();         String str = "";         int count=0; // 记录翻转长度         for (int i = 0; i < expr.length(); i++) {             // 记录上一左括号出现时,str 长度,记录需要翻转的长度             char c = expr.charAt(i);             if (c == '(') {                 stack.add(c);                 reverse.add(str.length());             } else if (c == ')') {                 if (stack.size() < 1) {                     return "";                 }                 int last = reverse.pop();                 StringBuilder temp = new StringBuilder(str.substring(last, str.length()));                 str = str.substring(0, last) + temp.reverse();                 stack.pop();                 count = 0; // 归零             } else {                 str+=""+c;                 count++;             }         }         return stack.size() == 0 ? str : "";     }
点赞 1

相关推荐

昨天 20:09
武汉纺织大学 C++
点赞 评论 收藏
分享
01-14 12:08
门头沟学院 Java
神哥了不得:(非引流)1.既然发出来了简历,就稍微提一点点小建议,确实简历很不错了,练手项目可以换一些质量高的,工作内容,可以加上一些量化指标,比如第一条系统响应速度由多少变成多少,减少了百分之多少,第4条就很不错。2.广投,年前实习招募比较少了
点赞 评论 收藏
分享

牛客热帖

更多
牛客网
牛客企业服务