File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments