关注
我的方法是用两个栈分别 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
相关推荐
点赞 评论 收藏
分享
06-12 16:05
南京信息工程大学 算法工程师 
点赞 评论 收藏
分享
06-13 15:10
杭州电子科技大学 运营 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 职场捅娄子大赛 #
376289次浏览 3834人参与
# 工作中的卑微时刻 #
12288次浏览 67人参与
# 写给毕业5年后的自己 #
14064次浏览 244人参与
# 多益网络工作体验 #
45380次浏览 236人参与
# 比亚迪求职进展汇总 #
718489次浏览 3078人参与
# 你觉得材料专业有必要实习嘛 #
12904次浏览 59人参与
# 找实习你看重大厂光环还是业务方向 #
14930次浏览 116人参与
# 神州信息工作体验 #
10055次浏览 45人参与
# 机械人,你拿到几个offer啦 #
34945次浏览 302人参与
# 你的房租占工资的比例是多少? #
30839次浏览 372人参与
# 机械人,说说你的烦心事 #
66763次浏览 832人参与
# 你最满意的offer薪资是哪家公司? #
28753次浏览 158人参与
# 工作经验重要还是工资重要? #
131898次浏览 1005人参与
# 打工人的辛酸 #
40860次浏览 422人参与
# 考研对你找工作产生了哪些影响? #
19192次浏览 172人参与
# 听到哪句话就代表面试稳了or挂了? #
167614次浏览 1357人参与
# 找工作如何保持松弛感? #
88549次浏览 1103人参与
# lastday知无不言 #
53333次浏览 443人参与
# 什么专业适合考公 #
32709次浏览 208人参与
# 电信求职进展汇总 #
9520次浏览 81人参与