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

华为OD机试真题---字符串变换最小字符串


题目描述:

给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。

变换规则:

交换字符串中任意两个不同位置的字符。

输入描述:

一串小写字母组成的字符串s

输出描述:

按照要求进行变换得到的最小字符串

补充说明:

s是都是小写字符组成
1<=s.length<=1000

示例
示例1

输入:abcdef
输出:abcdef
说明:abcdef已经是最小字符串,不需要交换

示例2

输入:bcdefa
输出:acdefb
说明:a和b进行位置交换,可以等到最小字符串

在Java中,我们可以实现一个函数来找到可以通过最多一次字符交换得到的字典序最小的字符串。以下是一个可能的实现:


代码实现
public class MinStringBySwap {public static String getMinStringBySwap(String s) {// 将字符串转换为字符数组char[] chars = s.toCharArray();// 复制一份排序后的字符数组,用于比较char[] sortedChars = chars.clone();java.util.Arrays.sort(sortedChars);// 如果原字符串已经是排序后的,直接返回if (java.util.Arrays.equals(chars, sortedChars)) {return s;}// 查找需要交换的字符位置int i = 0;while (i < chars.length && chars[i] == sortedChars[i]) {i++;}// 从后向前查找可以交换的字符位置int j = chars.length - 1;while (j > i && chars[j] != sortedChars[i]) {j--;}// 交换字符if (j > i) {char temp = chars[i];chars[i] = chars[j];chars[j] = temp;}// 将字符数组转换回字符串并返回return new String(chars);}public static void main(String[] args) {// 测试示例1String s1 = "abcdef";System.out.println(getMinStringBySwap(s1));  // 输出: abcdef// 测试示例2String s2 = "bcdefa";System.out.println(getMinStringBySwap(s2));  // 输出: acdefb}
}

解释

  1. 字符数组转换和排序

    • 将输入字符串转换为字符数组chars
    • 复制一份字符数组并排序,得到sortedChars
  2. 检查是否已排序

    • 如果charssortedChars相同,说明字符串已经是字典序最小的,直接返回原字符串。
  3. 查找交换位置

    • 使用变量i从前往后遍历chars,找到第一个与sortedChars不匹配的字符位置。
    • 使用变量j从后往前遍历chars,找到最后一个与sortedChars[i]相等的字符位置。
  4. 字符交换

    • 如果找到了合适的ij,则交换chars[i]chars[j]
  5. 返回结果

    • 将交换后的字符数组转换回字符串并返回。

这个算法的时间复杂度主要由排序步骤决定,为O(n log n),其中n是字符串的长度。空间复杂度为O(n),因为需要复制一份字符数组进行排序。

相关文章:

华为OD机试真题---字符串变换最小字符串

题目描述: 给定一个字符串s&#xff0c;最多只能进行一次变换&#xff0c;返回变换后能得到的最小字符串(按照字典序进行比较)。 变换规则: 交换字符串中任意两个不同位置的字符。 输入描述: 一串小写字母组成的字符串s 输出描述: 按照要求进行变换得到的最小字符串 补…...

JAVA基础面试题汇总(持续更新)

1、精确运算场景使用浮点型运算问题 精确运算场景&#xff08;如金融领域计算应计利息&#xff09;计算数字&#xff0c;使用浮点型&#xff0c;由于精度丢失问题&#xff0c;会导致计算后的结果和预期不一致&#xff0c;使用Bigdecimal类型解决此问题&#xff0c;示例代码如下…...

设计模式-创建型-常用:单例模式、工厂模式、建造者模式

单例模式 概念 一个类只允许创建一个对象&#xff08;或实例&#xff09;&#xff0c;那这个类就是单例类&#xff0c;这种设计模式就叫做单例模式。对于一些类&#xff0c;创建和销毁比较复杂&#xff0c;如果每次使用都创建一个对象会很耗费性能&#xff0c;因此可以把它设…...

【数据结构】【链表代码】随机链表的复制

/*** Definition for a Node.* struct Node {* int val;* struct Node *next;* struct Node *random;* };*/typedef struct Node Node; struct Node* copyRandomList(struct Node* head) {if(headNULL)return NULL;//1.拷贝结点&#xff0c;连接到原结点的后面Node…...

Linux 系统五种帮助命令的使用

Linux 系统五种帮助命令的使用 本文将介绍 Linux 系统中常用的帮助命令&#xff0c;包括 man、–help、whatis、apropos 和 info 命令。这些命令对于新手和有经验的用户来说&#xff0c;都是查找命令信息、理解命令功能的有力工具。 文章目录 Linux 系统五种帮助命令的使用一…...

Vueron引领未来出行:2026年ADAS激光雷达解决方案上市路线图深度剖析

Vueron ADAS激光雷达解决方案路线图分析&#xff1a;2026年上市展望 Vueron近期发布的ADAS激光雷达解决方案路线图&#xff0c;标志着该公司在自动驾驶技术领域迈出了重要一步。该路线图以2026年上市为目标&#xff0c;彰显了Vueron对未来市场趋势的精准把握和对技术创新的坚定…...

Java | Leetcode java题解之第458题可怜的小猪

题目&#xff1a; 题解&#xff1a; class Solution {public int poorPigs(int buckets, int minutesToDie, int minutesToTest) {if (buckets 1) {return 0;}int[][] combinations new int[buckets 1][buckets 1];combinations[0][0] 1;int iterations minutesToTest /…...

怎么不改变视频大小的情况下,修改视频的时长

视频文件太大怎么变小&#xff1f;不影响画质的四种方法 怎么不改变视频大小的情况下,修改视频的时长 截取结尾的时间你可以使用 ffmpeg 来裁剪视频的结尾部分。假设你想去掉视频最后的3秒钟&#xff0c;可以先使用 ffmpeg 获取视频的总时长&#xff0c;然后通过指定一个新的…...

数据结构:AVL树

前言 学习了普通二叉树&#xff0c;发现普通二叉树作用不大&#xff0c;于是我们学习了搜索二叉树&#xff0c;给二叉树新增了搜索、排序、去重等特性&#xff0c; 但是&#xff0c;在极端情况下搜索二叉树会退化成单边树&#xff0c;搜索的时间复杂度达到了O(N)&#xff0c;这…...

系统守护者:使用PyCharm与Python实现关键硬件状态的实时监控

目录 前言 系统准备 软件下载与安装 安装相关库 程序准备 主体程序 更改后的程序&#xff1a; 编写.NET程序 前言 在现代生活中&#xff0c;电脑作为核心工具&#xff0c;其性能和稳定性的维护至关重要。为确保电脑高效运行&#xff0c;我们不仅需关注软件优化&#xf…...

【工作流引擎集成】springboot+Vue+activiti+mysql带工作流集成系统,直接用于业务开发,流程设计,工作流审批,会签

前言 activiti工作流引擎项目&#xff0c;企业erp、oa、hr、crm等企事业办公系统轻松落地&#xff0c;一套完整并且实际运用在多套项目中的案例&#xff0c;满足日常业务流程审批需求。 一、项目形式 springbootvueactiviti集成了activiti在线编辑器&#xff0c;流行的前后端…...

SumatraPDF一打开就无响应怎么办?

结论&#xff1a;当前安装版不论32位还是64位都会出现问题。使用portable免安装版未发现相关问题。——sumatrapdf可以用于pdf, epub, mobi 等格式文件的浏览。 点击看相关问题和讨论...

棋牌灯控计时计费系统软件免费试用版怎么下载 佳易王计时收银管理系统操作教程

一、前言 【试用版软件下载&#xff0c;可以点击本文章最下方官网卡片】 棋牌灯控计时计费系统软件免费试用版怎么下载 佳易王计时收银管理系统操作教程 棋牌计时计费软件的应用也提升了顾客的服务体验&#xff0c;顾客可以清晰的看到自己的消费时间和费用。增加了消费的透明…...

Excel下拉菜单制作及选项修改

Excel下拉菜单 1、下拉菜单制作2、下拉菜单修改 下拉框&#xff08;选项菜单&#xff09;是十分常见的功能。Excel支持下拉框制作&#xff0c;通过预设选项进行菜单选择&#xff0c;可以避免手动输入错误和重复工作&#xff0c;提升数据输入的准确性和效率 1、下拉菜单制作 步…...

树莓派 mysql (兼容mariadb)登陆问题

树莓派 mysql &#xff08;兼容mariadb&#xff09;登陆问题 树莓派 MySQL 登陆问题 1 使用默认账号登陆 在首次登陆的情况下&#xff0c;系统默认为root用户授权 sudo su root ![切换到root 用户](https://img-blog.csdnimg.cn/20191019082911668.png) 2. 使用root用户登…...

智能手表(Smart Watch)项目

文章目录 前言一、智能手表&#xff08;Smart Watch&#xff09;简介二、系统组成三、软件框架四、IAP_F411 App4.1 MDK工程结构4.2 设计思路 五、Smart Watch App5.1 MDK工程结构5.2 片上外设5.3 板载驱动BSP5.4 硬件访问机制-HWDataAccess5.4.1 LVGL仿真和MDK工程的互相移植5…...

设计模式~~~

简单工厂模式(静态工厂模式) 工厂方法模式 抽象工厂角色 具体工厂角色...

Golang | Leetcode Golang题解之第458题可怜的小猪

题目&#xff1a; 题解&#xff1a; func poorPigs(buckets, minutesToDie, minutesToTest int) int {if buckets 1 {return 0}combinations : make([][]int, buckets1)for i : range combinations {combinations[i] make([]int, buckets1)}combinations[0][0] 1iterations…...

欢聚时代(BIGO)Android面试题及参考答案

网络 TCP 和 UDP 协议的区别是什么? TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)是两种不同的传输层协议,它们有以下主要区别: 一、连接性 TCP 是面向连接的协议。在通信之前,需要通过三次握手建立连接,通信结束…...

[C语言]指针和数组

目录 1.数组的地址 2.通过指针访问数组 3.数组和指针的不同点 4.指针数组 1.数组的地址 数组的地址是什么&#xff1f; 看下面一组代码 #include <stdio.h> int main() { int arr[5] {5,4,3,2,1}; printf("&arr[0] %p\n", &arr[0]); printf(&qu…...

你的电机仿真结果靠谱吗?聊聊Maxwell瞬态分析里那些容易被忽略的‘坑’

电机仿真精度提升指南&#xff1a;Maxwell瞬态分析中的关键细节与验证方法 当你在凌晨三点盯着屏幕上那条波动异常的转矩曲线时&#xff0c;是否曾怀疑过自己的仿真模型在说谎&#xff1f;作为从业十五年的电磁仿真专家&#xff0c;我见过太多工程师在项目验收前夜才发现仿真结…...

从Java转行大模型应用,Advanced-RAG 学习

一、RAG 进阶概述&#xff08;Advanced-RAG&#xff09;基础RAG&#xff08;检索增强生成&#xff09;核心是“检索生成”的两阶段流程&#xff0c;解决大模型“幻觉”和知识时效性问题&#xff0c;但在复杂场景&#xff08;长文档、模糊查询、高精准需求&#xff09;中存在检索…...

轴,V带轮,斜齿轮,丝杠零件图CAD图纸

轴作为机械系统中的核心传动部件&#xff0c;承担着传递扭矩与支撑旋转的重要功能。其设计需综合考虑材料强度、刚度及热处理工艺&#xff0c;以确保在复杂载荷下保持稳定运行。典型结构包含阶梯轴、空心轴等类型&#xff0c;通过优化轴肩定位与键槽布局&#xff0c;可有效提升…...

终极指南:在PC上完美运行PS4游戏的秘密武器

终极指南&#xff1a;在PC上完美运行PS4游戏的秘密武器 【免费下载链接】shadPS4 PS4 emulator for Windows,Linux,MacOS 项目地址: https://gitcode.com/gh_mirrors/shad/shadPS4 你是否曾经梦想过在电脑上畅玩那些只能在PS4上体验的独占大作&#xff1f;今天&#xff…...

收藏 | 阿里字节开源Agent框架大比拼:小白程序员必看,三种思路助你入门大模型!

本文对比了阿里和字节开源的HiClaw、CoPaw和DeerFlow三个Agent框架&#xff0c;分析了它们在架构设计、安全模型和适用场景上的差异。HiClaw侧重多Agent协作&#xff0c;CoPaw聚焦个人AI助手&#xff0c;DeerFlow强调单Agent深度任务处理。文章还探讨了阿里组合拳与字节单点突破…...

我的LVDS信号有振铃?可能是端接电阻没选对!从仿真到实测的端接方案选择指南

LVDS信号振铃问题全解析&#xff1a;从端接电阻选择到实测验证 振铃现象是LVDS信号传输中最令人头疼的问题之一。当你在示波器上看到信号边沿出现振荡波形时&#xff0c;第一反应可能是怀疑PCB布局或信号源质量。但经验丰富的工程师都知道&#xff0c;80%的振铃问题根源在于端接…...

如何利用多渠道SEO推广提高网站流量

<h2>多渠道SEO推广&#xff1a;如何提高网站流量</h2> <p>在当前竞争激烈的互联网环境中&#xff0c;网站流量是衡量网站成功与否的重要指标之一。如何利用多渠道SEO推广提高网站流量&#xff0c;成为了每一个网站运营者关注的焦点。本文将从问题分析、原因说…...

告别COLMAP预处理:3D高斯溅射的零配置新体验

告别COLMAP预处理&#xff1a;3D高斯溅射的零配置新体验 【免费下载链接】CF-3DGS 项目地址: https://gitcode.com/gh_mirrors/cf/CF-3DGS 想象一下&#xff0c;你刚刚拍摄了一组精美的场景照片&#xff0c;想要快速生成3D模型&#xff0c;却发现需要先运行复杂的COLMA…...

从休眠到唤醒:深入解读AUTOSAR CanNm的Bus Load Reduction与Immediate Restart机制

从休眠到唤醒&#xff1a;深入解读AUTOSAR CanNm的Bus Load Reduction与Immediate Restart机制 在新能源汽车和智能座舱快速发展的今天&#xff0c;车载电子系统的功耗优化与实时响应能力成为工程师面临的核心挑战。AUTOSAR CanNm模块作为车载网络管理的关键组件&#xff0c;其…...

SillyTavern:重新定义AI角色扮演的沉浸式交互平台

SillyTavern&#xff1a;重新定义AI角色扮演的沉浸式交互平台 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 当我们在数字世界中寻找真实的情感连接时&#xff0c;AI对话系统往往陷入机械…...