Skip to content

Commit 7410632

Browse files
committed
feat: resolved
1 parent 3051c47 commit 7410632

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

add_strings/src/lib.rs

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,33 @@ pub struct Solution {}
33
impl Solution {
44
pub fn add_strings(num1: String, num2: String) -> String {
55
let max_length = num1.len().max(num2.len());
6-
let mut digits1 = num1
6+
let mut reversed_digits1 = num1
77
.chars()
88
.rev()
99
.map(|c| c.to_digit(10).unwrap() as u64)
1010
.collect::<Vec<u64>>();
11-
let mut digits2 = num2
11+
let mut reversed_digits2 = num2
1212
.chars()
1313
.rev()
1414
.map(|c| c.to_digit(10).unwrap() as u64)
1515
.collect::<Vec<u64>>();
16-
while digits1.len() < max_length {
17-
digits1.push(0);
16+
while reversed_digits1.len() < max_length {
17+
reversed_digits1.push(0);
1818
}
19-
while digits2.len() < max_length {
20-
digits2.push(0);
19+
while reversed_digits2.len() < max_length {
20+
reversed_digits2.push(0);
2121
}
22-
(0..max_length)
23-
.fold(0, |acc, i| {
24-
acc * 10 + digits1[max_length - i - 1] + digits2[max_length - i - 1]
25-
})
26-
.to_string()
22+
let mut reversed_res = vec![];
23+
let mut digit = 0;
24+
for i in 0..max_length {
25+
let sum = digit + reversed_digits1[i] + reversed_digits2[i];
26+
reversed_res.push(sum % 10);
27+
digit = sum / 10;
28+
}
29+
if digit != 0 {
30+
reversed_res.push(digit);
31+
}
32+
reversed_res.iter().rev().map(|d| d.to_string()).collect()
2733
}
2834
}
2935

0 commit comments

Comments
 (0)