An integer has **monotone increasing digits** if and only if each pair of adjacent digits `x` and `y` satisfy `x <= y`.

Given an integer `n`, return _the largest number that is less than or equal to_ `n` _with **monotone increasing digits**_.

**Example 1:**

**Input:** n = 10
**Output:** 9

**Example 2:**

**Input:** n = 1234
**Output:** 1234

**Example 3:**

**Input:** n = 332
**Output:** 299

**Constraints:**

*   `0 <= n <= 109`


def monotoneIncreasingDigits(n: int) -> int:
    n_str = [c for c in str(n)]

    i = len(n_str) - 1
    while i > 0:
        if n_str[i] < n_str[i - 1]:
            n_str[i - 1] = chr(ord(n_str[i - 1]) - 1)
            for j in range(i, len(n_str)):
                n_str[j] = '9'
        i -= 1

    return int(''.join(n_str))
