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

华为OD机试之报文重排序【Java源码】

题目描述

对报文进行重传和重排序是常用的可靠性机制,重传缓中区内有一定数量的子报文,每个子报文在原始报文中的顺序已知,现在需要恢复出原始报文。

输入描述

输入第一行为N,表示子报文的个数,0 <N ≤ 1000。
输入第二行为N个子报文,以空格分开,子报文格式为:

字符审报文内容+后缀顺序索引

字符串报文内容由[a-z,A-Z]组成,后缀为整型值,表示顺序。

顺序值唯一,不重复。

输出描述

输出恢复出的原始报文,按照每个子报文的顺序的升序排序恢复出原始报文,顺序后缀需要从恢复出的报文中删除掉

用例

输入4
rolling3 stone4 like1 a2
输出like a rolling stone
说明4个子报文的内容分别为 "rolling","stone","like","a",顺序值分别为3,4,1,2,按照顺序值升序并删除顺序后缀,得到恢复的原始报文:"like a rolling stone“
输入8
gifts6 and7 Exchanging1 all2 precious5 things8 kinds3 of4
输出Exchanging all kinds of precious gifts and things
说明

解析

本题属于简单的字符串操作,只需要熟悉常见的数据结构和排序即可。可以使用正则或者后序遍历的方式取出每个单词的后的数值,从而对单词进行排序即可。

示例代码

package com.bytesoc.calc;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;public class T71 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = Integer.parseInt(sc.nextLine());List<Integer> orderList = new ArrayList<>();Map<Integer, String> wordMap = new HashMap<Integer, String>();String input = sc.nextLine();String wordArr[] = input.split(" ");for (int i = 0; i < wordArr.length; i++) {String word = wordArr[i];// 截取尾部的数字String numStr = "";String last = word.charAt(word.length() - 1) + "";Integer number = -1;try {while (word.length() > 0) {int nS = Integer.parseInt(last);numStr = nS + numStr;StringBuilder sb = new StringBuilder(word);sb.setCharAt(word.length() - 1, ' ');word = sb.toString().trim();last = word.charAt(word.length() - 1) + "";}} catch (Exception e) {number = Integer.parseInt(numStr);}String content = word.replace(numStr, "");orderList.add(number);wordMap.put(number, content);}orderList.sort((a, b) -> a - b);for (Integer key : orderList) {System.out.print(wordMap.get(key) + " ");}}
}

代码只提供编程思路,未经过官方实例测试

执行示例:

在这里插入图片描述

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

相关文章:

  • 回归预测 | MATLAB实现BES-ELM秃鹰搜索优化算法优化极限学习机多输入单输出回归预测(多指标,多图)
  • DPU在东数西算背景下如何赋能下一代算力基础设施 中科驭数在未来网络发展大会论道
  • 2021年12月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • ArcGIS Serve Windows下用户密码变更导致Server服务无法启动问题
  • React 面试题集锦
  • xargs命令解决“Argument list too long”
  • R语言中<- 的含义
  • 知识图谱Neo4j安装到实践全过程
  • 贪心算法:简单而高效的优化策略
  • 一生一芯6——ubuntu rpm软件安装
  • Python练习 函数取列表最小数
  • 五种重要的 AI 编程语言
  • 【linux】2 make/Makefile和gitee
  • db-gpt安装指南(docker版本)
  • 「Java」《深度解析Java Stream流的优雅数据处理》
  • 【云驻共创】华为云之手把手教你搭建IoT物联网应用充电桩实时监控大屏
  • Hadoop分布式计算与资源调度:打开专业江湖的魔幻之门
  • 为什么叫源表?源表是如何四象限工作的?
  • 云原生周刊:Kubernetes v1.28 正式发布 | 2023.8.21
  • Git基础——基本的 Git本地操作
  • PythonJS逆向解密——实现翻译软件+语音播报
  • gPRC与SpringBoot整合教程
  • Hadoop Yarn 配置多队列的容量调度器
  • c语言练习题28:杨氏矩阵
  • 梳理系统学习R语言1-R语言实战-使用ggplot进行高阶绘图
  • 测试框架pytest教程(2)-用例依赖库-pytest-dependency
  • electron软件安装时,默认选择为全部用户安装
  • MySQL常用表级操作
  • Golang Gorm 一对多关系 关系表创建
  • java八股文面试[数据结构]——ConcurrentHashMap原理