670. Maximum Swap

Given a non-negative integer, you could swap two digits at most once to get the maximum valued number. Return the maximum valued number you could get.

Example 1:

Input: 2736
Output: 7236
Explanation: Swap the number 2 and the number 7.

Example 2:

Input: 9973
Output: 9973
Explanation: No swap.

Note:

  1. The given number is in the range [0, 108]

// Brute Force
int maximumSwap(int num) { // time: O(n^2); space: O(n)
    string str = to_string(num);
    int res = num, n = str.length();
    for (int i = 0; i < n; ++i) {
        for (int j = i + 1; j < n; ++j) {
            swap(str[i], str[j]);
            res = max(res, stoi(str) );
            swap(str[i], str[j]);
        }
    }
    return res;
}

Last updated

Was this helpful?