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

给你一个仅由数字组成的字符串 s,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的字典序最小的字符串。
如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5 和 9、2 和 4 奇偶性相同,而 6 和 9 奇偶性不同。

  • 输入: s = “45320”
    输出: “43520”
    解释:
    s[1] == ‘5’ 和 s[2] == ‘3’ 都具有相同的奇偶性,交换它们可以得到字典序最小的字符串。

  • 输入: s = “001”
    输出: “001”

1
2
3
4
5
6
7
8
9
10
var getSmallestString = function(s) {
let arr=s.split("")//将字符串转成数组,方便操作
for(let i=1;i<arr.length;i++){//从前向后遍历数组
if(((arr[i]%2===0&&arr[i-1]%2===0)||(arr[i]%2!==0&&arr[i-1]%2!==0))&&arr[i-1]>arr[i]){//当奇偶性相同并且前一个数大于后一个数
[arr[i],arr[i-1]]=[arr[i-1],arr[i]]//交换两个位置的值
return arr.join("")//如果发生第一次交换,那么直接返回交换后的字符串
}
}
return s//如果便利结束还没有发生交换,那么原字符串自身就是答案
};