0
点赞
收藏
分享

微信扫一扫

【670. 最大交换】

千妈小语 2022-04-24 阅读 119

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;
    }
};

思路:

总结:

举报

相关推荐

0 条评论