電商設(shè)計(jì)網(wǎng)站培訓(xùn)武漢網(wǎng)絡(luò)關(guān)鍵詞排名
今日題目為:3216. 交換后字典序最小的字符串
題目詳情:
給你一個(gè)僅由數(shù)字組成的字符串 s
,在最多交換一次 相鄰 且具有相同 奇偶性 的數(shù)字后,返回可以得到的字典序最小的字符串。
如果兩個(gè)數(shù)字都是奇數(shù)或都是偶數(shù),則它們具有相同的奇偶性。例如,5 和 9、2 和 4 奇偶性相同,而 6 和 9 奇偶性不同。
示例:
示例 1:
輸入: s = "45320"
輸出: "43520"
解釋:
s[1] == '5'
和s[2] == '3'
都具有相同的奇偶性,交換它們可以得到字典序最小的字符串。示例 2:
輸入: s = "001"
輸出: "001"
解釋:
無(wú)需進(jìn)行交換,因?yàn)?
s
已經(jīng)是字典序最小的。
解題思路:
首先題目描述說(shuō)了需要交換一次相鄰且具有奇偶性的數(shù)字,那么s為字符串,需要交換的話就需要遍歷且也要方便交換位置,那么就把s轉(zhuǎn)換為數(shù)組形式,在進(jìn)行遍歷,首先需要兩數(shù)進(jìn)行交換判斷,那么就要想到數(shù)組的長(zhǎng)度是否為偶數(shù),即i+1<arr.length。首先將遍歷元素轉(zhuǎn)換為數(shù)字形式,在進(jìn)行判斷兩個(gè)數(shù)字奇偶性是否相同,如果相同再進(jìn)行判斷誰(shuí)在數(shù)字表中最先出現(xiàn),即誰(shuí)最小,再根據(jù)結(jié)果進(jìn)行交換位置,最后將數(shù)組轉(zhuǎn)換為字符串形式輸出。
具體解決代碼:
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] = tempbreak}}}}return arr.join('')
};