leetcode_rust/
plus_one.rs1#![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}