关注
我的方法是用两个栈分别 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
相关推荐
查看3道真题和解析
点赞 评论 收藏
转发
点赞 评论 收藏
转发
05-16 11:34
已编辑
查看6道真题和解析
点赞 评论 收藏
转发
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
822210次浏览 13036人参与
# 机械制造薪资爆料 #
320075次浏览 3732人参与
# 晒一晒我的offer #
3467698次浏览 55259人参与
# 0offer是寒冬太冷还是我太菜 #
428029次浏览 4945人参与
# 你觉得找工作该拿大厂还是小厂练手 #
61624次浏览 872人参与
# 荣耀求职进展汇总 #
70630次浏览 717人参与
# 如果可以选,你最想从事什么工作 #
186086次浏览 3078人参与
# 实习生应该准时下班吗 #
80747次浏览 592人参与
# 金三银四,你有感觉到吗 #
329243次浏览 4222人参与
# 海康威视求职进展汇总 #
101607次浏览 1217人参与
# 正在春招的你,也参与了去年秋招吗? #
136475次浏览 1705人参与
# 实习必须要去大厂吗? #
13842次浏览 219人参与
# 实习工作,你找得还顺利吗? #
42434次浏览 469人参与
# 我在牛爱网找对象 #
49814次浏览 322人参与
# 软件开发投递记录 #
479183次浏览 7243人参与
# 宁德时代求职进展汇总 #
37062次浏览 413人参与
# 国企vs私企,你更想去? #
20273次浏览 205人参与
# 求职遇到的搞笑事件 #
19676次浏览 287人参与
# 想实习转正,又想准备秋招,我该怎么办 #
117866次浏览 1329人参与
# 正在实习的你,有转正机会吗? #
106434次浏览 1043人参与