17,227
社区成员




给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。
示例 2 :
输入: 9973
输出: 9973
解释: 不需要交换。
注意:
给定数字的范围是 [0, 108]
class Solution {
public int maximumSwap(int num) {
char[] chs = (num+"").toCharArray();
char max1 = chs[0];
int len=chs.length;
Character[] tmp = new Character[len];
for(int i=0;i<len;i++) tmp[i] = chs[i];
Arrays.sort(tmp,new Comparator<Character>(){
public int compare(Character c1,Character c2){
return c2-c1;
}
});
int l,r;
for(int i=0;i<len;i++){
if(tmp[i]==chs[i]) continue;
else{
l=i;
r=len-1;
while(l<r){
if(chs[r]==tmp[i]) break;
r--;
}
char t= chs[i];
chs[i] = chs[r];
chs[r] = t;
break;
}
}
return Integer.parseInt(String.valueOf(chs));
}
}