Skip to content

Latest commit

 

History

History
47 lines (38 loc) · 1.09 KB

File metadata and controls

47 lines (38 loc) · 1.09 KB

738. Monotone Increasing Digits

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

Solutions (Rust)

1. Solution

impl Solution {
    pub fn monotone_increasing_digits(n: i32) -> i32 {
        let mut digits = n.to_string().into_bytes();
        let mut i = digits.len();

        while let Some(j) = (0..digits.len() - 1).find(|&j| digits[j] > digits[j + 1]) {
            digits[j] -= 1;
            for k in j + 1..i {
                digits[k] = b'9';
            }
            i = j + 1;
        }

        String::from_utf8(digits).unwrap().parse().unwrap()
    }
}