670. Maximum Swap
https://leetcode.com/problems/maximum-swap/
/*
* @lc app=leetcode id=670 lang=cpp
*
* [670] Maximum Swap
*/
// @lc code=start
class Solution {
public:
int maximumSwap(int num) {
auto s = to_string(num);
vector<int> last(10, -1);
for (int i = 0; i < s.length(); ++i) {
last[s[i] - '0'] = i;
}
for (int i = 0; i < s.length(); ++i) {
for (int j = 9; j > (s[i] - '0'); --j) {
if (last[j] <= i) continue;
swap(s[i], s[last[j]]);
return stoi(s);
}
}
return num;
}
};
// @lc code=end
Last updated