字符串-05-字符串合并处理

文章目录

  • 1. 题目描述
  • 2. 思路
  • 3. 代码

1. 题目描述

按照指定规则对输入的字符串进行处理。

详细描述:

第一步:将输入的两个字符串str1和str2进行前后合并。如给定字符串 “dec” 和字符串 “fab” , 合并后生成的字符串为 “decfab”

第二步:对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标的意思是字符在字符串中的位置。注意排序后在新串中仍需要保持原来的奇偶性。例如刚刚得到的字符串“decfab”,分别对下标为偶数的字符’d’、‘c’、‘a’和下标为奇数的字符’e’、‘f’、'b’进行排序(生成 ‘a’、‘c’、‘d’ 和 ‘b’ 、‘e’ 、‘f’),再依次分别放回原串中的偶数位和奇数位,新字符串变为“abcedf”

第三步:对排序后的字符串中的'0'~'9''A'~'F''a'~'f'字符,需要进行转换操作。

转换规则如下:
对以上需要进行转换的字符所代表的十六进制用二进制表示并倒序,然后再转换成对应的十六进制大写字符(注:字符 a~f的十六进制对应十进制的10~15,大写同理)。

  • 如字符 ‘4’,其二进制为 0100 ,则翻转后为 0010 ,也就是 2 。转换后的字符为 ‘2’。
  • 如字符 ‘7’,其二进制为 0111 ,则翻转后为 1110 ,对应的十进制是14,转换为十六进制的大写字母为 ‘E’。
  • 如字符 ‘C’,代表的十进制是 12 ,其二进制为 1100 ,则翻转后为 0011,也就是3。转换后的字符是 ‘3’。

根据这个转换规则,由第二步生成的字符串 “abcedf” 转换后会生成字符串 “5D37BF”。

数据范围:输入的字符串长度满足 1 ≤ n ≤ 100 1≤n≤100 1n100

输入描述
样例输入两个字符串,用空格隔开。

输出描述
输出转化后的结果。

示例1

输入:dec fab
输出:5D37BF

示例

输入:ab CD
输出:3B5D
说明:合并后为abCD,按奇数位和偶数位排序后是CDab(请注意要按ascii码进行排序,所以C在a前面,D在b前面),转换后为3B5D

示例3

输入:123 15
输出:88C4A

2. 思路

该题主要涉及的是字符串的拼接、排序。难点在于二进制、十进制、十六进制之间的相互转换,结合现成的方法不难实现。

重要的方法:

  • Integer.parseInt(String s, int radix) :传递radix进制的字符串,转为十进制的数字。
    • 举例:Integer.parseInt("0010",2)代表将0010字符串转为二进制数字。
  • String.format(String format, Object args) :指定字符串的格式,对args进行转换。
    • "%4s":代表组成4位的字符串,补充的位置用’ '空格代替。
  • String.replace(char oldChar, char newChar):将oldChar替换为newChar 。
  • StringBuilder.reverse():将字符序列倒置。

3. 代码

public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNext()) { // 注意 while 处理多个 caseString s1 = in.next();String s2 = in.next();//1. 合并字符串StringBuilder builder = new StringBuilder();builder.append(s1).append(s2);//2. 合并后的字符串排序char[] charArray = builder.toString().toCharArray();ArrayList<Character> even = new ArrayList<>();ArrayList<Character> odd = new ArrayList<>();//排序for (int i = 0; i < charArray.length; i++) {if (i % 2 == 0){//偶数even.add(charArray[i]);}else {//奇数odd.add(charArray[i]);}}Collections.sort(even);Collections.sort(odd);//重新组合for (int i = 0; i < charArray.length; i++) {if (i % 2 == 0){//偶数charArray[i] = even.get(i/2);}else {//奇数charArray[i] = odd.get(i/2);}}//3. 进行转换操作StringBuilder result = new StringBuilder();for (char c : charArray) {if ((c >= '0' && c <= '9')||(c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')){//转化为十六进制的数字int value;if (c >= '0' && c <= '9'){value = c - '0';}else if (c >= 'a' && c <= 'f'){value = c - 'a' + 10;}else{value = c - 'A' + 10;}//转为4位的二进制String binaryString = String.format("%4s", Integer.toBinaryString(value)).replace(' ', '0');//倒置二进制String reverseBinaryString = new StringBuilder(binaryString).reverse().toString();//转为十进制int number = Integer.parseInt(reverseBinaryString, 2);//如果>=10,转为十六进制if (number >= 10){char hd = (char) ('A' + number - 10);result.append(hd);}else {result.append(number);}}else {result.append(c);}}System.out.println(result.toString());}
}

以上为个人学习分享,如有问题,欢迎指出:)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/460010.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ffmpeg视频滤镜:定向模糊-dblur

滤镜简述 dblur 官网链接 > https://ffmpeg.org/ffmpeg-filters.html#dblur 有一个模糊滤镜&#xff0c;我试了一下&#xff0c;没有感觉到它的特殊之处, 这里简单介绍一下。 滤镜使用 滤镜的参数 angle <float> ..FV.....T. set angle (from 0 t…

浏览器HTTP缓存解读(HTTP Status:200 304)

为什么要有浏览器缓存&#xff1f; 浏览器缓存(Brower Caching)是浏览器对之前请求过的文件进行缓存&#xff0c;以便下一次访问时重复使用&#xff0c;节省带宽&#xff0c;提高访问速度&#xff0c;降低服务器压力 http缓存机制主要在http响应头中设定&#xff0c;响应头中…

Facebook登录崩溃?别急,神奇秘籍拯救你丨出海笔记

今天文章很短&#xff0c;但非常实用&#xff01; 相信运营同学或多或少都会在登录facebook的时候遇到: 您所关注的链接可能已损坏&#xff0c;或页面可能已被移除。 This page isnt available, The link you followed may be broken, or the page may have been removed. 然…

Redmi Note 12 Turbo 1TB root教程

文章目录 通过手机下载完整的系统包通过payload-dumper-go 提取boot.img把下载的安装包直接拉到payload-dumper-go.exe通过第三步 找到boot.img把boot.img 拉到手机Download&#xff0c;通过magisk修补boot修补完成后找到这个文件&#xff0c;通过adb刷入 连接不上adb 通过手机…

Xcode 16.1 (16B40) 发布下载 - Apple 平台 IDE

Xcode 16.1 (16B40) 发布下载 - Apple 平台 IDE IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 发布日期&#xff1a;2024 年 10 月 28 日 Xcode 16.1 包含适用于 iOS 18.1、iPadOS 18.1、Apple tvOS 18.1、watchOS 11.1、macOS Sequoia 15.1 和 visionOS 2.1 的 SDK。Xco…

Docker-微服务项目部署

环境准备 1.微服务项目 参考&#xff1a;通过网盘分享的文件&#xff1a;wolf2w_cloud.zip 链接: https://pan.baidu.com/s/1Lr4k6LPIJ59gVNA_DgKM_Q?pwdkjxt 提取码: kjxt 前端项目&#xff1a;trip-mgrsite-ui&#xff0c;trip-website-ui&#xff0c;trip-wenda-ui 服务项…

【Redis】常见基本全局命令

一、Redis俩大核心命令 由于Redis是以键值对的形式进行数据存取&#xff0c;自然就离不开不断的存储和获取&#xff0c;而其所对应的命令则是set和get&#xff0c;如此说来二者为Redis的核心基础命令也不为过。 作用&#xff1a;用于存储Stirng类型的数据 返回&#xff1a;当…

Ubuntu下安装和配置MySQL5.7教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 在ubuntu下安装MySQL数据库 查看操作系统版本 ​编辑 添加 MySQL APT 源 访问下载页面并下载发布包 安装发布包 安装MySQL 查看MySQL状态 开启自启动 登…

普通人适合做大模型吗?过程中会发生什么潜在的挑战?

对于普通人来说&#xff0c;直接进行大模型的研发和训练可能存在一定的挑战&#xff0c;因为这通常需要以下资源和知识&#xff1a; 专业知识&#xff1a; 大模型的开发需要深入理解机器学习、深度学习、神经网络等领域的知识。 计算资源&#xff1a; 大模型的训练需要高性能的…

(蓝桥杯C/C++)——常用库函数

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、 二分查找 1.二分查找的前提 2.binary_ search函数 3.lower_bound和upper_bound 二、排序 1.sort概念 2.sort的用法 3.自定义比较函数 三、全排列 1.next p…

qt配置https请求

qt应用版本 windows 32位 先说下心理路程&#xff0c;你能遇到的我都遇到了&#xff0c;你能想到的我都想到了&#xff0c;怎么解决看这一篇就够了&#xff0c;从上午12点到晚上12点几乎没离开电脑&#xff08;除了吃饭&#xff09;&#xff0c;对于openssl这种用的时候无感&am…

HTML练习题:彼岸的花(web)

展示效果: 代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>彼岸の花</title><style…

学STM32选标准库还是HAL库?

我学STM32的时候&#xff0c;stm32cubeMX还没推出&#xff0c;HAL库还没出来&#xff0c;主要以标准库为准。 下面讲下我学习STM32的经历&#xff0c;从陌生到应用到项目大概花了2-3周&#xff0c;相信99%的人都能通过这种方法&#xff0c;快速把STM32玩起来。 我是项目需要&am…

池化层笔记

池化层 文章目录 池化层二维池化层超参数池化层的分类代码实现填充和步幅 多个通道 总结 卷积对位置敏感&#xff0c;可以检测垂直边缘。需要有一定程度的平移不变性&#xff0c;而在平时图片的拍摄&#xff0c;会因为图片的照明&#xff0c;物体位置&#xff0c;比例&#xff…

以太网交换安全:DHCP Snooping

一、DHCP Snooping的概念及功能 DHCP Snooping是一种用于增强网络中DHCP服务安全性的技术。以下是对以太网交换安全中的DHCP Snooping进行详细的介绍&#xff1a; 基本概述 定义目的&#xff1a;DHCP Snooping是一种网络安全技术&#xff0c;旨在防止未经授权的DHCP服务器在网…

【问题记录】解决VMware虚拟机中鼠标侧键无法使用的问题

前言 有项目需要在Linux系统中开发&#xff0c;因为要测试Linux中相关功能&#xff0c;要用到shell&#xff0c;在Windows中开发太麻烦了&#xff0c;因此我选择使用UbuntuXfce4桌面来开发&#xff0c;这里我用到了Linux版本的IDEA&#xff0c;除了快捷键经常和系统快捷键冲突…

[JAVAEE] 面试题(二) - CAS 和 原子类

目录 一. CAS的实现原理 1.1 伪代码分析 1.2 底层实现 二. CAS 操作示例 三. ABA问题 四. 原子类 4.1 使用原子类的目的 4.2 原子类的使用示例 五. 总结 一. CAS的实现原理 CAS(compare and swap 比较和交换)是一种用于实现无锁并发的技术. 1.1 伪代码分析 // 伪代…

Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程

Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程 Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程前言 OpenCV概述核心功能优势特点应用领域安装与使用 OpenCV_contrib概述核心功能具体模块 安装与使用一、准备工作二、下载OpenCV和OpenCV_contrib三、编译和安装OpenCV四、…

HCIP--2 TCP有关笔记

学习目标&#xff1a; 目录 学习目标&#xff1a; 学习内容&#xff1a; TCP协议 七层结构 END.......... 问题&#xff1a;TCP/IP 的四层协议 问题&#xff1a;网络的七层结构及其作用 问题&#xff1a;协议名称是什么&#xff1f; TELNET---远程登陆系统 HTTP---超文本传输协…

【优先算法】双指针

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;优先算法 个人主页&#xff1a;Celias blog~ 目录 ​​​​​​移动零 复写零 快乐数 盛水最多的容器 …