leetcode_rust/
plus_one.rs

1#![allow(dead_code)]
2
3pub fn plus_one(mut digits: Vec<i32>) -> Vec<i32> {
4    let mut i = digits.len() - 1;
5    digits[i] += 1;
6    let mut carry = true;
7    while i > 0 {
8        if digits[i] >= 10 {
9            digits[i] -= 10;
10            digits[i - 1] += 1;
11        } else {
12            carry = false;
13            break;
14        }
15        i -= 1;
16    }
17    if carry && digits[0] == 10 {
18        digits[0] = 0;
19        let mut res = vec![1];
20        res.extend(digits);
21        res
22    } else {
23        digits
24    }
25}
26
27#[cfg(test)]
28mod tests {
29    use super::*;
30
31    #[test]
32    fn test1() {
33        assert_eq!(plus_one(vec![1, 2, 3]), vec![1, 2, 4]);
34        assert_eq!(plus_one(vec![9, 9]), vec![1, 0, 0]);
35    }
36}