1、题目描述
2、问题分析
直接按照加法运算规则运算即可,注意进位问题。
3、代码
1 string addStrings(string num1, string num2) { 2 if( num1.empty() ) return num2; 3 if( num2.empty() ) return num1; 4 5 string::reverse_iterator it1 = num1.rbegin() ; 6 string::reverse_iterator it2 = num2.rbegin() ; 7 string s ; 8 int up = 0; 9 while( it1 != num1.rend() && it2 != num2.rend() ){ 10 int a = (*it1 - '0') + (*it2 - '0') + up ; 11 if( a < 10 ){ 12 s = std::to_string( a ) + s; 13 up = 0; 14 }else{ 15 s = std::to_string( a - 10 ) + s; 16 up = 1; 17 } 18 ++it1; 19 ++it2; 20 } 21 22 while( it1 != num1.rend() ){ 23 if( *it1 - '0' + up < 10 ){ 24 s = std::to_string( *it1 - '0' + up ) + s; 25 up = 0; 26 }else{ 27 s = std::to_string( *it1 - '0' + up - 10 ) + s; 28 up = 1; 29 } 30 ++it1; 31 } 32 33 while( it2 != num2.rend() ){ 34 if( *it2 - '0' + up < 10 ){ 35 s = std::to_string( *it2 - '0' + up ) + s; 36 up = 0; 37 }else{ 38 s = std::to_string( *it2 - '0' + up - 10 ) + s; 39 up = 1; 40 } 41 ++it2 ; 42 } 43 44 if( up == 1 ){ 45 s = std::to_string(1) + s; 46 } 47 48 return s; 49 50 }