网站后台怎么改密码,百度竞价排名及自动竞价功能,台州网页设计,企业网站源码挣钱吗今日题目为#xff1a;3216. 交换后字典序最小的字符串
题目详情#xff1a;
给你一个仅由数字组成的字符串 s#xff0c;在最多交换一次 相邻 且具有相同 奇偶性 的数字后#xff0c;返回可以得到的字典序最小的字符串。
如果两个数字都是奇数或都是偶数#xff0c;则…今日题目为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转换为数组形式在进行遍历首先需要两数进行交换判断那么就要想到数组的长度是否为偶数即i1arr.length。首先将遍历元素转换为数字形式在进行判断两个数字奇偶性是否相同如果相同再进行判断谁在数字表中最先出现即谁最小再根据结果进行交换位置最后将数组转换为字符串形式输出。
具体解决代码
var getSmallestString function(s) {const arr s.split()for(let i 0; iarr.length;i){if(i1arr.length){const num1 parseInt(s[i],10)const num2 parseInt(s[i1],10)if((num1%2) (num2%2)){if(num1num2){let temp arr[i]arr[i] arr[i1]arr[i1] tempbreak}}}}return arr.join()
};