Maximum 69 Number

easy greedy math

Problem

You are given a positive integer num whose decimal digits are only 6s and 9s. You may change at most one digit — turn a 6 into a 9 or a 9 into a 6. Return the largest number you can end up with.

Inputnum = 9669
Output9969
Flipping the leftmost 6 (index 1) gives 9969; flipping the other 6 gives only 9699, and turning any 9 into a 6 makes the number smaller.

def maximum_69_number(num):
    digits = list(str(num))
    for i, d in enumerate(digits):
        if d == '6':
            digits[i] = '9'   # flip the leftmost 6
            break
    return int("".join(digits))
function maximum69Number(num) {
  const digits = String(num).split("");
  for (let i = 0; i < digits.length; i++) {
    if (digits[i] === "6") {
      digits[i] = "9"; // flip the leftmost 6
      break;
    }
  }
  return Number(digits.join(""));
}
int maximum69Number(int num) {
    char[] digits = String.valueOf(num).toCharArray();
    for (int i = 0; i < digits.length; i++) {
        if (digits[i] == '6') {
            digits[i] = '9'; // flip the leftmost 6
            break;
        }
    }
    return Integer.parseInt(new String(digits));
}
int maximum69Number(int num) {
    string digits = to_string(num);
    for (int i = 0; i < (int)digits.size(); i++) {
        if (digits[i] == '6') {
            digits[i] = '9'; // flip the leftmost 6
            break;
        }
    }
    return stoi(digits);
}
Time: O(d) (d = number of digits) Space: O(d)