前端算法题:3216. 交换后字典序最小的字符串(力扣每日一题)

今日题目为:3216. 交换后字典序最小的字符串

题目详情:

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

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

示例:

示例 1:

输入: s = "45320"

输出: "43520"

解释:

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

示例 2:

输入: s = "001"

输出: "001"

解释:

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

解题思路:

首先题目描述说了需要交换一次相邻且具有奇偶性的数字,那么s为字符串,需要交换的话就需要遍历且也要方便交换位置,那么就把s转换为数组形式,在进行遍历,首先需要两数进行交换判断,那么就要想到数组的长度是否为偶数,即i+1<arr.length。首先将遍历元素转换为数字形式,在进行判断两个数字奇偶性是否相同,如果相同再进行判断谁在数字表中最先出现,即谁最小,再根据结果进行交换位置,最后将数组转换为字符串形式输出。

具体解决代码:

javascript 复制代码
var getSmallestString = function(s) {
    const arr = s.split('')
    for(let i = 0; i<arr.length;i++){
        if(i+1<arr.length){
            const num1 = parseInt(s[i],10)
            const num2 = parseInt(s[i+1],10)
            if((num1%2) === (num2%2)){
                if(num1>num2){
                    let temp = arr[i]
                    arr[i] = arr[i+1]
                    arr[i+1] = temp
                    break
                }
            }
        }
    }
    return arr.join('')
};
相关推荐
Ai_easygo6 小时前
AI Agent开发入门——从ReAct到Tool Calling,拆解Agent的底层运行逻辑
前端·人工智能·react.js
研☆香6 小时前
分析制作html页面,如何划分页面结构
前端
kyriewen6 小时前
我扒了最近的前端面经——2026年面试不背八股文了,考这5样
前端·面试·ai编程
IT_陈寒7 小时前
Redis的持久化配置把我坑惨了:你以为数据安全了?
前端·人工智能·后端
小徐_23337 小时前
uni-app 项目别再从零搭了!3 个 Wot UI 起手模板怎么选?
前端·uni-app
赵庆明老师7 小时前
Vben精讲:16-熟悉Vite前端工具链
前端
战族狼魂9 小时前
高频面试题精选:分治与AI Agent架构
人工智能·算法·大模型·大语言模型
李剑一9 小时前
你用过网易的将军令嘛?它底层实现账号保护的原理相当简单粗暴
算法
Scott9999HH9 小时前
告别流量波动玄学!从法拉第电磁定律到底层 C/C++ 流量累积算法,深度解密工业级电磁流量计选型与开发
c语言·c++·算法
中达瑞和-高光谱·多光谱9 小时前
1nm到8nm光谱分辨率,你的应用该选哪款光谱相机?
算法·高光谱·高光谱相机