leetcode0670. 最大交换-medium
1 题目:最大交换
官方标定难度:中
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。
示例 2 :
输入: 9973
输出: 9973
解释: 不需要交换。
注意:
给定数字的范围是 [ 0 , 10 8 ] [0, 10^8] [0,108]
2 solution
直接尝试交换每两位,找到最大的即可
代码
class Solution {
public:int maximumSwap(int num) {int n = log10(num);int ans = num, pow = 1, m = num;for (int i = 0; i < n; i++) {int pow2 = pow, z = m;for (int j = i + 1; j <= n; j++) {pow2 *= 10;z /= 10;int y = num - (pow2 - pow) * (z % 10 - m % 10);ans = max(y, ans);}pow *= 10;m /= 10;}return ans;}
};