#include <any>
#include <unordered_map>
class Solution {
public:
//位优先,在一位上后面有比它大的数就交换,但是这个有相同的数也是最后面的数给它交换;
string maximumSwap(string num) {
//记录每个数字最后出现的位置;
unordered_map<int, int> mp;//键是数字,值是最后出现的位置
int i=0;
for(char c:num){
int e = c - '0';
mp[e] = i; //存放下标
++i;
}
for(i=0; i<num.size(); ++i){
int e = num[i] - '0';
for(int j=9; j>e; --j){
if(mp[j] > i){
swap(num[i], num[mp[j]]);
return num;
}
}
}
return num;
}
};

京公网安备 11010502036488号