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

news/2024/7/20 19:56:58 标签: 华为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
说明

解析

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

示例代码

java">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.niftyadmin.cn/n/4959232.html

相关文章

云上的甜蜜早安:腾讯云云函数助力PHP打造女友专属每日推送

用腾讯云的云函数做一个微信公众号早安&#xff0c;每天定时发送早安给你的女朋友&#xff01; 1.首先我们登录腾讯云&#xff0c;在搜索栏搜索云函数 2.进入云函数&#xff0c;点击立即体验 3.这里我们选择 按照步骤选择 php 4.再就是配置页面&#xff0c;这里我们只需要配…

微信小程序教学系列(8)

微信小程序教学系列 第八章&#xff1a;小程序国际化开发 欢迎来到第八章&#xff01;这一次我们要谈论的是小程序国际化开发。你可能会问&#xff0c;什么是国际化&#xff1f;简单来说&#xff0c;国际化就是让小程序能够适应不同的语言和地区&#xff0c;让用户们感受到更…

嵌入式设备应用开发(上位机配合)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 很多的嵌入式设备,其实是需要和上位机配合使用的。简单的配置下ip、port等参数就可以用起来了。但是对于复杂的嵌入式设备,除了基本的网络配置之外,算法参数、操作流程、业务逻辑…

19 真实的战场:如何在大型项目中涉及GUI自动化测试策略

大型全球化电商网站 GUI 测试的策略设计 组件 -> 模块 -> 端到端 1&#xff09; 首先&#xff0c;要从前端组件的级别来保证质量&#xff0c;也就是需要对那些自定义开发的组件进行完整全面的测试。通常前端组件会基于 Jest 做比较严格的单元测试。 Jest 是由 Facebook 发…

Vue3 + Vite 中使用 vite-plugin-svg-icons 插件显示本地 SVG 图标

总体思路如下: 安装 vite-plugin-svg-icons 插件,并将其作为开发依赖添加到项目中:npm install vite-plugin-svg-icons -D在 vite.config.ts(或者是 vite.config.js)中配置插件。导入 createSvgIconsPlugin 方法和 path 模块,并在 plugins 中添加插件实例。你需要指定需要…

【中危】 Apache NiFi 连接 URL 验证绕过漏洞 (CVE-2023-40037)

漏洞描述 Apache NiFi 是一个开源的数据流处理和自动化工具。 在受影响版本中&#xff0c;由于多个Processors和Controller Services在配置JDBC和JNDI JMS连接时对URL参数过滤不完全。使用startsWith方法过滤用户输入URL&#xff0c;导致过滤可以被绕过。攻击者可以通过构造特…

【SpringCloud】Sleuth链路追踪使用

文章目录 概述配置YMLPOM示例调用路径 概述 能够查看服务调用链路 官网&#xff1a; https://github.com/spring-cloud/spring-cloud-sleuth 在分布式系统中提供追踪解决方案并且兼容支持了zipkin 配置 SpringCloud从F版起已不需要自己构建Zipkin Server了&#xff0c;只需调…

使用GEWE框架进行微信个人资料管理、批量管理

友情链接 geweapi.com 点击即可访问 更新个人资料 请求URL&#xff1a; http://域名地址/api/personal/updateprofile 请求方式&#xff1a; POST 请求头&#xff1a; Content-Type&#xff1a;application/json X-GEWE-TOKEN: 后台获取 参数&#xff1a; 参数名必填…