题目描述:
标签:贪心 数学
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
代码:
思路分析:
从高位开始,寻找能否在低位找到替换位,替换的数字尽可能大,当有同大时选择更低的。
class Solution {
public int maximumSwap(int num) {
char[] array = String.valueOf(num).toCharArray();
for(int i = 0;i < array.length;i++){
int flag = i;
for(int j = i + 1;j < array.length;j++){
if(array[j] >= array[flag]){
flag = j;
}
}
if(flag != i && array[flag] != array[i]){
char tmp = array[i];
array[i] = array[flag];
array[flag] = tmp;
break;
}
}
return Integer.parseInt(new String(array));
}
}