关注
`` static String resolve(String expr) {
Stack stack1 = new Stack();
// 用来储存 右括号前的字符串长度 保证只反转括号内的内容
Stack<Integer> stack2 = new Stack<>();
StringBuilder res = new StringBuilder();
Map<Character, Character> stock = new HashMap<>();
stock.put(')', '(');
for (int i = 0; i < expr.length(); i++){
// 右括号入栈1
if (expr.charAt(i)== '('){
// 右括号入栈后 要先统计一下之前的字符串的长度 保证只反转括号内的字符
stack1.push(expr.charAt(i));
// 之所以使用栈的形式存储 因为也是先进后出的特点
stack2.push(res.toString().length());
}// 当为左括号时
else if(expr.charAt(i) == ')'){
// 先看栈1是否为空 如果栈1为空的话 返回空字符串 或者栈顶的括号不匹配
if (stack1.empty() || stack1.peek() != stock.get(expr.charAt(i))){
// 不符合条件返回空字符串
return "";
}
// 满足则弹出栈顶元素
stack1.pop();
// 当弹出一次左扩号时 反转一次字符串 这里有一点问题 并不应该反转所有的字符串
int length = stack2.pop();
// 括号内的字符
String str = res.substring(length, res.toString().length());
// 拼接字符串 得到反转操作的字符
res = new StringBuilder(res.substring(0, length)).append(new StringBuilder(str).reverse());
}else{
// 字母则拼接如字符
res.append(expr.charAt(i));
}
}
if (stack1.empty()){
return res.toString();
}
return "";
}
查看原帖
点赞 评论
相关推荐
05-12 17:00
门头沟学院 Java king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
30868次浏览 632人参与
# 机械人集合!你是什么工程师? #
15308次浏览 88人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
25946次浏览 211人参与
# 秋招什么时候开投比较合适? #
19000次浏览 274人参与
# 发工资后,你做的第一件事是什么 #
67554次浏览 229人参与
# 如何准备秋招 #
18058次浏览 348人参与
# 百度工作体验 #
219205次浏览 1957人参与
# 机械人与华为的爱恨情仇 #
116197次浏览 942人参与
# 工作中哪个瞬间让你想离职 #
25434次浏览 177人参与
# 硬件应届生薪资是否普遍偏低? #
73580次浏览 514人参与
# 不考虑转正,实习多久合适 #
31567次浏览 145人参与
# 影石Insta360求职进展汇总 #
123124次浏览 1069人参与
# 通信和硬件还有转码的必要吗 #
57249次浏览 526人参与
# 24届的你们都什么时候入职? #
59956次浏览 424人参与
# 面试被问期望薪资时该如何回答 #
255974次浏览 1479人参与
# 实习,不懂就问 #
41827次浏览 643人参与
# 你们公司几号发工资 #
20524次浏览 139人参与
# 软开人,秋招你打算投哪些公司呢 #
102425次浏览 958人参与
# 每个月的工资都是怎么分配的? #
25036次浏览 408人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
28977次浏览 460人参与
# 你觉得现在还能进互联网吗? #
7456次浏览 130人参与