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

news/2025/3/28 16:23:56/

题目

给出一个字符串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.ppmy.cn/news/1282289.html

相关文章

SpringCloud跨服务调用失败Seata无法回滚解决办法

遇到的问题 在微服务项目中 有A、B、C三个服务 其中 A调用B服务 &#xff0c;B调用C&#xff0c; 这些就是跨服务调用了&#xff0c;在A服务中 还调用了一个当前模块执行插入数据的方法(在这里我就叫它为AA 也就是mybatis/spring管理的本地事务) A服务开启全局事务注解 Globa…

使用PE信息查看工具和Dependency Walker工具排查因为库版本不对导致程序启动报错的问题

目录 1、问题说明 2、问题分析思路 3、问题分析过程 3.1、使用Dependency Walker打开软件主程序&#xff0c;查看库与库的依赖关系&#xff0c;找出出问题的库 3.2、使用PE工具查看dll库的时间戳 3.3、解决办法 4、最后 VC常用功能开发汇总&#xff08;专栏文章列表&…

补题与总结:leetcode第 377 场周赛

文章目录 写在最前面的复盘2977. 转换字符串的最小成本 II&#xff08;Flody 爆搜优化->dp&#xff09; 写在最前面的复盘 感谢leetcode&#xff0c;丰富了我为数不多的卡常经验 2是简单思维题&#xff0c;但卡常 4是爆搜优化&#xff0c;也卡常&#xff0c;补题时给卡麻了…

如何在服务器上部署springboot项目

在服务器上部署Spring Boot项目通常有以下步骤&#xff1a; 在服务器上安装Java运行环境&#xff1a;首先确保服务器上已经安装了Java运行环境&#xff08;至少需要Java 8或以上版本&#xff09;。 快速安装JDK命令&#xff1a; yum install java-1.8.0-openjdk.x86_64 打包S…

k8s实战之ELK日志管理

首先查看总体流程 首先创建namespace apiVersion: v1 kind: Namespace metadata:name: kube-logging 一、首先创建es.yaml --- apiVersion: v1 #kubernetes API版本,采用最新版本v1 kind: Service #资源类型定义为Service metadata: name: elasticsearch-logging # …

设计模式之-中介者模式,快速掌握中介者模式,通俗易懂的讲解中介者模式以及它的使用场景

系列文章目录 设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式&#xff0c;5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式&#xff0c;每一种模式的概念、使用…

PDF编辑工具--Acrobat Pro DC 2023中文

Acrobat Pro DC 2023是一款功能强大的PDF编辑和管理软件&#xff0c;它可以帮助用户在创建、编辑、转换和共享PDF文档方面达到前所未有的高度。这款软件提供了丰富的编辑功能&#xff0c;使用户能够轻松添加注释、高亮、下划线、插入文本等&#xff0c;自由地编辑PDF文档。除了…

IDEA Maven Helper插件 解决jar冲突

Jar包冲突报错 程序抛出java.lang.ClassNotFoundException异常&#xff1b; 程序抛出java.lang.NoSuchMethodError异常&#xff1b; 程序抛出java.lang.NoClassDefFoundError异常&#xff1b; 程序抛出java.lang.LinkageError异常等&#xff1b;Maven Jar包管理机制 在Maven项…