3216. 交换后字典序最小的字符串

news/2024/10/30 10:47:22/文章来源:https://www.cnblogs.com/java-cheng/p/18515362

给你一个仅由数字组成的字符串 s,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的
字典序最小的字符串

如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5 和 9、2 和 4 奇偶性相同,而 6 和 9 奇偶性不同。

示例 1:

输入: s = "45320"

输出: "43520"

解释:

s[1] == '5' 和 s[2] == '3' 都具有相同的奇偶性,交换它们可以得到字典序最小的字符串。

示例 2:

输入: s = "001"

输出: "001"

解释:

无需进行交换,因为 s 已经是字典序最小的。

提示:

2 <= s.length <= 100
s 仅由数字组成。

解题思路:
1.通过比较字符串中相邻字符的值,并在特定条件下交换它们的位置,来构造一个字典序最小的字符串
2.特定条件是:当前字符的值大于下一个字符,且它们的值奇偶性相同

完整代码:/*** 获取字典序最小的字符串* 该方法通过比较字符串中相邻字符的值,并在特定条件下交换它们的位置,来构造一个字典序最小的字符串* 特定条件是:当前字符的值大于下一个字符,且它们的值奇偶性相同** @param s 输入的字符串* @return 经过调整后字典序最小的字符串*/public static String getSmallestString(String s) {// 将输入字符串转换为字符数组,便于逐个字符处理char[] arr = s.toCharArray();// 遍历字符数组,直到倒数第二个字符,因为需要比较当前字符和下一个字符for (int i = 0; i + 1 < arr.length; i++) {// 如果当前字符的值大于下一个字符,且它们的值奇偶性相同,则交换它们// 这个条件确保了交换后字符串的字典序会变小if (arr[i] > arr[i + 1] && arr[i] % 2 == arr[i + 1] % 2) {// 交换相邻两个字符的位置char temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;// 一旦发生交换,立即结束循环,因为仅需一次交换来满足字典序最小的条件break;}}// 将处理后的字符数组转换回字符串并返回return new String(arr);}

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

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

相关文章

实现注解校验Dto字段是否为空

一、背景 我们用json对象作为接收参数的包装器,最后要转化为dto进行业务操作,操作之前要做非空校验,我们可以实现2个注解来实现这个通用的操作。@NotNullField @CheckNull 二、思路 1.实现@NotNullField注解,注解标记在dto字段名上面 @Target(ElementType.FIELD) // 目标为字…

学习高校课程-系统设计与分析-进入设计领域(lec6)

IndexFundamental Design Tasks and Activities 基本设计任务和活动 Understanding the challenges in Iteration 0 了解迭代 0 中的挑战 Structural Modeling and Behavior Modeling 结构建模和行为建模 More on Common Used DiagramsPackage Diagram 封装图 Interaction Diag…

乐维网管平台(三)如何高效管理无线网络

一、无线网络管理概述 1.什么是无线网络管理 无线网络管理是指利用专门的软件平台(如网管平台)对无线网络设备(如无线接入点、无线控制器等)及其相关资源进行集中监控、配置、优化和维护的一系列操作。其主要目的是确保无线网络的高效稳定运行,提升用户体验,保障网络安全…

销售的艺术:价值与策略

一、销售的核心在于展现价值 销售不仅仅是表面的推销技巧,如“多多关照,多多捧场”或“只有今天的500单有这个价格”。其核心在于“展现价值”,即将商品的功能、优点、魅力和价值传递给有需求的人,激发他们的购买欲望。一个简单的公式——价值>价格,是销售过程中的关键所…

Fastjson枚举序列化和反序列化的推荐实现

一、背景 项目中定义了很多dto,包含枚举类型,而且这些枚举全都自定义标志码。比如7001 对应 某种操作。返回前台时,需要转化为对应的7001,前台传入后台时也希望7001转化为枚举。 二、研究思路 一开始,研究了fastjson的默认实现。发现只有不自定义类似7001这种默认值的时候,…

第13课—数据库之索引

一、索引的介绍 1、什么是索引? (1)定义:索引是一种数据结构 一个索引在存储的表中的数据结构; (2)索引是在表的字段上创建的 (3)索引包含了一列值,这个值保存在一个数据结构中 2、索引作用? (1)保证数据记录的唯一性 (2)实现表与表之间的参照性 (3)减少排序和…

触觉智能SOM3588S鸿蒙核心板现已上市,RK3588S八核6T超高算力!

触觉智能SOM3588S鸿蒙核心板,搭载瑞芯微RK3588S芯片,采用4.5*5cm超小尺寸邮票孔+LGA封装,10层盲埋孔沉金工艺!内置八核64位CPU,Mali-G610四核GPU,6T超高算力NPU,广泛应用边缘计算、人工智能、云计算、虚拟/增强现实等行业深圳触觉智能SOM3588S鸿蒙核心板现已上市,搭载瑞…

2个月搞定计算机二级C语言——真题(6)解析

1. 前言 本篇我们讲解2个月搞定计算机二级C语言——真题 62. 程序填空题 2.1 题目要求2.2 提供的代码 #include <stdio.h> unsigned long fun(unsigned long n) {unsigned long x = 0;int t;while (n) {t = n % 10;/**********found**********/if (t % 2 == __…

5秒激活Win10

按住 Win+X ,选择 windows powershell(管理员), 输入 irm utools.run/win | iex (| 是 Enter键盘上的那个键,按住Shift+Enter上面的那个键,不行就复制粘贴)KMS激活脚本最大特色是代码开源,小巧不误报。三种激活方式分别是 :HWID数字许可证永久激活、KMS38激活至2038年、…

说透性能测试:每个测试人都能学好的性能测试!

1、提起性能测试,你的第一反应是什么? 当提到性能测试,你的第一反应是什么?是不屑一顾,认为它很简单,没发展前途、没技术含量?还是觉得它太难了,高不可攀,每当遇到系统的疑难杂症时,抓耳挠腮,无从下手? 很多IT从业人员,认为"性能测试仅仅只是测试的工作,会用…

设计卷积神经网络CNN为什么不是编程?

上一篇:《搞清楚这个老六的真面目!逐层‘剥开’人工智能中的卷积神经网络(CNN)》 序言:现在让我们开始走进卷积神经网络(CNN)的世界里。和传统编程完全不同,在人工智能的程序代码里,您看不到明确的算法规则,看到的只是神经网络的配置说明。这里的代码不会像传统编程那…