当前位置: 首页 > news >正文

【华为OD题库-110】反转每对括号间的子串-java

题目

给出一个字符串s(仅含有小写英文字母和括号)。
请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中不应包含任何括号。
示例1:
输入: s = “(abcd)”
输出: “dcba”
示例2:
输入: s = “(u(love)i)”
输出: “iloveu”
解释: 先反转子字符串“love",然后反转整个字符串。
示例3:
输入: s = “(ed(et(oc))el)”
输出: “leetcode”
解释: 先反转子字符串"oc”,接着反转“etco”,然后反转整个字符串。
示例4:
输入: s = "a(bcdefghijkl(mno)p)q”
输出: “apmnolkjihgfedcbq”

思路

利用栈的先入后出特性,遇到),这将字符串翻转后重新入栈
最后栈中的数据就是要求的字符串,此时应该先入先出,外层可以用双端队列实现

题解

package hwod;import java.util.LinkedList;
import java.util.Scanner;public class ReverseSub {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s = sc.nextLine();System.out.println(reverseSub(s));}private static String reverseSub(String s) {LinkedList<Character> queue = new LinkedList<>();LinkedList<Character> tmp = new LinkedList<>();for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == ')') {while (!queue.isEmpty()&&queue.peekLast() != '(') {tmp.addLast(queue.removeLast());}if(!queue.isEmpty()) queue.removeLast();while (!tmp.isEmpty()) {queue.addLast(tmp.removeFirst());}} else {queue.addLast(s.charAt(i));}}StringBuilder sb = new StringBuilder();while (!queue.isEmpty()) {sb.append(queue.removeFirst());}return sb.toString();}
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

说明

本专栏所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/qq_31076523/article/details/134176793。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

http://www.lryc.cn/news/267379.html

相关文章:

  • 如何搭建一个高效的Python开发环境
  • Reactor 和 Proactor模式,IO复用与epoll、同步IO,异步IO与协程
  • nginx反向代理服务器及负载均衡服务配置
  • 【Log4j2】Log4j2最佳实践:Log4j2配置超过7天压缩,超过3个月删除文件的滚动日志,分别定义info文件和error文件,按照每小时存储
  • windows和Linux如何做强制域名解析
  • 5G NTN:通信新天地,卫星通信的奇妙探索
  • RabbitMQ的基础使用
  • 使用Uniapp随手记录知识点
  • Fiber Node的数据结构,以及如何在Reconciliation阶段被使用。
  • Spring Cloud Alibaba 之 Sentinel
  • Jenkins Tutorial
  • css mask 案例
  • 案例系列:Movielens_预测用户对电影的评分_基于行为序列Transformer的推荐系统
  • 单词接龙[中等]
  • 机器人制作开源方案 | 森林管理员
  • Laravel框架使用phpstudy本地安装的composer用Laravel 安装器进行安装搭建
  • 炫酷登录注册界面【超级简单 jQuery+JS+HTML+CSS实现】
  • 2023年国赛高教杯数学建模E题黄河水沙监测数据分析解题全过程文档及程序
  • 跨国企业传输大文件注意事项和解决方案
  • 【Redis】Redis 的数据类型
  • QT小技巧 - 使用QMovie进行gif切帧
  • ES-搜索
  • 微信小程序面试题
  • OpenCV之图像匹配与定位
  • 掌握JWT:解密身份验证和授权的关键技术
  • git命令和docker命令
  • 【K8S in Action】服务:让客户端发现pod 并与之通信(2)
  • Spring Boot 中实现跨域的几种方式
  • WT2605C音频蓝牙语音芯片:单芯片实现蓝牙+MP3+BLE+电话本多功能应用
  • 计算机毕业设计 基于SpringBoot的高校宣讲会管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解