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

华为OD机试 - 压缩报文还原 - 正则表达式(Java 2023 B卷 100分)

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

为了提高数据传输的效率,会对传输的报文进行压缩处理。

输入一个压缩后的报文,请返回它解压后的原始报文。

压缩规则:n[str],表示方括号内部的str正好重复n次。

注意:

  1. n为正整数,取值范围0~100,str只包含小写英文字母,不考虑异常情况。
  2. 原始报文长度不会超过1000,不考虑异常的情况。

二、输入描述

输入压缩后的报文:

  1. 不考虑无效的输入,报文没有额外的空格,方括号总是符合格式的要求;
  2. 原始报文不包含数字,所有的数字只表示重复的次数n,例如不会出现像5b或3[8]的输入;

三、输出描述

解压后的原始报文。

输入输出说明
3[k]2[mn]kkkmnmn
3[m2[c]]mccmccmcc

四、解题思路

核心是正则表达式。

五、Java算法源码

package com.guor.od;import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class OdTest {public static void main(String[] args) {Scanner s = new Scanner(System.in);String input = s.nextLine();System.out.print(calculate(input));}public static String calculate(String input) {if (input == null || "".equals(input)) {return "";}Pattern pattern = Pattern.compile("[0-9]+\\[[a-z]+]");Matcher matcher = pattern.matcher(input);if (!matcher.find()) {return input;}String group = matcher.group();int index = group.indexOf('[');int counts = Integer.parseInt(group.substring(0, index));String words = group.substring(index + 1, group.length() - 1);StringBuilder builder = new StringBuilder();for (int i = 0; i < counts; ++i) {builder.append(words);}String find = input.replace(group, builder.toString());return calculate(find);}
}

六、效果展示

1、输入

3[k]2[mn]

2、输出

kkkmnmn

3、说明

在这里插入图片描述


🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

相关文章:

  • 电商API的应用价值:淘宝1688京东API接口系列
  • day38 代码回想录 斐波那契数爬楼梯使用最小花费爬楼梯
  • Flink DataStream 体系
  • Linux的调试工具 - gdb(超详细)
  • 已知平面内三点,求其平面的法向量
  • HTML
  • Java手写最大子数组和算法(如Kadane算法)和最大子数组和算法(如Kadane算法)应用拓展案例
  • 掌握NVM、NRM和NPM:Node.js开发的利器
  • Nacos 2.2.3 部署到linux
  • 设计模式之十:状态模式
  • Python 的运算符和语句(条件、循环、异常)基本使用指南
  • 文心一言 VS 讯飞星火 VS chatgpt (94)-- 算法导论9.2 3题
  • React中组件通信01——props
  • 接口测试——接口协议抓包分析与mock_L1
  • 四种常用的自动化测试框架
  • Fuxploider:一款针对文件上传漏洞的安全检测与研究工具
  • Unity 安装及运行MLAgents
  • LightDB-A 兼容oracle支持mod操作符
  • SpringMVC之自定义注解
  • QT:使用普通按钮、网格布局管理器、标签、行编辑器、水平布局管理器、垂直布局管理器做一个小项目
  • 【小沐学写作】程序员必备技能:在线协作文档汇总
  • 「工具|数据接口」免费公开的REST API 如何借助github搭建自己的fake API接口
  • leetcode 18. 四数之和
  • 树上背包问题动态规划
  • linux查看进程对应的线程(数)
  • Python中的桌面应用开发库有哪些?
  • 【大数据】Neo4j 图数据库使用详解
  • Windows11系统C盘用户文件夹下用户文件夹为中文,解决方案
  • Python正则表达式(re)
  • 【PyTorch 08】如果要手动安装对应的包