670. 最大交换
670. 最大交換
給定一個非負整數(shù),你至多可以交換一次數(shù)字中的任意兩位。返回你能得到的最大值。
示例 1 :
輸入: 2736
輸出: 7236
解釋: 交換數(shù)字2和數(shù)字7。
示例 2 :
輸入: 9973
輸出: 9973
解釋: 不需要交換。
解題思路
目標就是優(yōu)先鎖定高位,像低位找比當前位更大的,并且位置越后越好,因為越前的位置占的權(quán)重越大,而我們交換以后會讓低位變小,因此我們是需要優(yōu)先將小權(quán)重的數(shù)位變小
代碼
class Solution {public int maximumSwap(int num) {char[] chars = String.valueOf(num).toCharArray();int n=chars.length;for (int i=0;i<n;i++){int c=i;for (int j=i+1;j<n;j++){if (chars[i]!=chars[j]&&chars[j]>=chars[c])c=j;}if (c!=i){char t=chars[c];chars[c]=chars[i];chars[i]=t;return Integer.parseInt(new String(chars));}}return num;} }總結(jié)
- 上一篇: 443. 压缩字符串
- 下一篇: 789. 逃脱阻碍者