leetcode力扣刷题打卡
题目:670. 最大交换
描述:给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
原代码##
class Solution {
static char cmp(char a, char b) {
return a > b;
}
public:
int maximumSwap(int num) {
string ori = to_string(num);
string change = ori;
sort(change.begin(), change.end(), cmp);
int n = ori.size();
char small = ' ', big = ' ';
for (int i = 0; i < n; ++i) {
if (ori[i] < change[i]) {
small = ori[i];
big = change[i];
ori[i] = change[i];
break;
}
}
if (big != ' ') {
for (int i = n - 1; i >= 0; --i) {
if (ori[i] == big) {
ori[i] = small;
break;
}
}
}
int ans = stoi(ori);
return ans;
}
};