Skip to content

Commit 7cbdd73

Browse files
committed
src/bin/add-strings.rs
1 parent 12de9c9 commit 7cbdd73

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

src/bin/add-strings.rs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
fn main() {}
2+
3+
struct Solution;
4+
5+
impl Solution {
6+
pub fn add_strings(num1: String, num2: String) -> String {
7+
let mut i = 0u8; // 进制
8+
let (num1, num2) = (num1.as_bytes(), num2.as_bytes());
9+
let (mut i1, mut i2) = (num1.len(), num2.len());
10+
11+
let mut v = vec![0u8; i1.max(i2) + 1];
12+
let mut vindex = v.len() - 1;
13+
14+
loop {
15+
let a = if i1 == 0 && i2 == 0 {
16+
break;
17+
} else if i1 == 0 && i2 > 0 {
18+
i2 -= 1;
19+
num2[i2] - b'0' + i
20+
} else if i1 > 0 && i2 == 0 {
21+
i1 -= 1;
22+
num1[i1] - b'0' + i
23+
} else {
24+
i2 -= 1;
25+
i1 -= 1;
26+
num1[i1] + num2[i2] -b'0' + i
27+
};
28+
29+
if a >= 10 {
30+
v[vindex] = a - 10;
31+
i = 1;
32+
} else {
33+
v[vindex] = a;
34+
i = 0;
35+
}
36+
37+
vindex -= 1;
38+
}
39+
40+
v[vindex..].iter().fold(String::with_capacity((&v[vindex..]).len()), |mut x, y| {
41+
x.push_str(&*y.to_string());
42+
x
43+
})
44+
}
45+
}

0 commit comments

Comments
 (0)