File tree Expand file tree Collapse file tree 1 file changed +17
-11
lines changed
Expand file tree Collapse file tree 1 file changed +17
-11
lines changed Original file line number Diff line number Diff line change @@ -3,27 +3,33 @@ pub struct Solution {}
33impl 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
You can’t perform that action at this time.
0 commit comments