news 2026/10/8 23:45:50

A.每日一题:1190. 反转每对括号间的子串

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
A.每日一题:1190. 反转每对括号间的子串

题目链接:1190. 反转每对括号间的子串(中等)

算法原理:

解法一:栈

时间复杂度O(N²)

2ms击败65.24%

我们用 StringBuilder 记录当前括号内部字符

①遇到 (:将当前 StringBuilder 内容压入栈,清空它,准备记录新的括号内部字符

②遇到 ):反转当前 StringBuilder(括号内子串),弹出栈顶的外层字符串,拼到反转内容前面

③普通字符:直接追加到 StringBuilder

遍历完成,StringBuilder 即为结果

答疑:insert 那部分没懂~~

sb.insert(0,stack.pop());把弹出来的外层字符串,插到当前 sb 的最开头

拿示例一 (u(love)i) 拆解:

当内层 (love) 碰到右括号 )

1.当前 sb="love"(括号里面收集到的字符)

2.执行 sb.reverse()→sb 变成 "evol"

3.stack.pop() 拿到栈顶:"u"

4.sb.insert(0,"u"):在索引0 最前面插入 "u"

sb 从 evol 变成 uevol

接下来拆解 (u(love)i) 最后面的 )

此时 sb 为 uevoli

1.sb.reverse()→iloveu

2.栈pop拿到""(因为最外层左括号前面是空字符串)

3.insert(0,"") ,空串插开头不变,sb 保持 iloveu 就是答案

解法二:递归

时间复杂度O(N²)

1ms击败97.43%

递归过程中,用一个在递归方法外的变量 i 表示当前下标,每遍历到一个字符,就把 i 加一

在递归方法 f 内部新建 StringBuilder ret,收集当前层级的字符

①遇到 (:开启内层括号,递归调用 f(),拿到内层处理并反转完成的字符串,追加到当前 ret(递归的“递”)

②遇到 ):当前这一对括号内的字符收集完毕,反转 ret,把反转后的串返回给上一层(递归的“归”)

③普通字符:直接追加到 ret

遍历完成,ret 即为结果

Java代码:

class Solution { //1190. 反转每对括号间的子串 //解法一:栈 public String reverseParentheses(String s) { Deque<String> stack=new LinkedList<>(); StringBuilder sb=new StringBuilder(); for(char c:s.toCharArray()){ if(c=='('){ //左括号:把当前暂存字符串压栈,清空sb准备存括号内的内容 stack.push(sb.toString()); sb.setLength(0); }else if(c==')'){ //右括号:反转当前括号内字符串,和栈顶拼接 sb.reverse(); sb.insert(0,stack.pop()); }else{ //普通字母,直接追加 sb.append(c); } } return sb.toString(); } }
class Solution { //1190. 反转每对括号间的子串 //解法二:递归 private int i=0; public String reverseParentheses(String S) { char[] s=S.toCharArray(); return f(s).toString(); } private StringBuilder f(char[] s){ StringBuilder ret=new StringBuilder(); while(i<s.length){ char ch=s[i]; i++; //归 if(ch==')') return ret.reverse(); //递 if(ch=='(') ret.append(f(s)); //字母 else ret.append(ch); } return ret; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 23:44:24

GC5845/GC5849替代A4945的BLDC无感正弦波驱动实战指南

做电机驱动的工程师这两年都懂一件事&#xff1a;不管你是做风机、水泵、电动工具还是汽车电子&#xff0c;只要原设计里用了进口的BLDC驱动芯片&#xff0c;迟早会碰上"一颗料卡住整个产线"的情况。我也一样&#xff0c;手头一个量产项目原本用的Allegro A4945&…

作者头像 李华
网站建设 2026/10/8 23:39:49

AI Agent技能化改造:从Prompt到可复用Skills技能包

如果你第一眼看到skills这个项目名&#xff0c;第一反应还是简历上的“特长与技能”&#xff0c;那你可能要在 AI Agent 开发语境里换个角度理解它。最近大半年&#xff0c;我一直在折腾 Agent 的技能化改造&#xff0c;skills这个词在工程圈里已经成了一个相当具体的概念&…

作者头像 李华
网站建设 2026/10/8 23:38:47

AI日报制作全流程拆解:从信息源分层到筛选写作的工程实践

1. 当日期成为标题的一部分&#xff1a;这份日报到底在记录什么看到"2026-09-26 AI最新资讯日报"这个标题&#xff0c;很多人的第一反应可能是&#xff1a;这不就是个新闻聚合吗&#xff1f;有什么好拆解的。但如果你真的在AI行业待过一段时间&#xff0c;就会明白一…

作者头像 李华
网站建设 2026/10/8 23:24:51

eFuse电源路径保护:STM32监控设计与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华