最大交换 Maximum Swap

2018-07-28 16:52:20

问题描述:

最大交换 Maximum Swap

问题求解:

使用bucket数组来记录每个数最后出现的位置,然后从左向右遍历一遍即可。

    public int maximumSwap(int num) {
char[] digits = String.valueOf(num).toCharArray();
int[] bucket = new int[10];
for (int i = 0; i < digits.length; i++) bucket[digits[i] - '0'] = i;
for (int i = 0; i < digits.length; i++) {
for (int k = 9; k > digits[i] - '0'; k--) {
if (bucket[k] > i) {
char tmp = digits[i];
digits[i] = digits[bucket[k]];
digits[bucket[k]] = tmp;
return Integer.valueOf(new String(digits));
}
}
}
return num;
}
上一篇:[原][unreal][UE][spark]分析unreal engine 虚幻引擎的粒子编辑器:Cascade


下一篇:第8章 信号(6)_贯穿案例2:mini shell(3)