leetcode 415. Add Strings | 大数加法
DescriptionGiven two non-negative integers num1 and num2 represented as string,return the sum of num1 and num2. Note: The length of both num1 and num2 is < 5100. My solution基本想法是一个carry保存进位信息, class Solution { public: string addStrings(string num1,string num2) { string res; char c = 0; char x1,x2,x; for (int i = num1.size() - 1,j = num2.size() - 1; i > -1 || j > -1; --i,--j) { x1 = i > -1 ? num1[i] : '0'; x2 = j > -1 ? num2[j] : '0'; x = x1 - '0' + x2 - '0' + c; c = char(x / 10); x %= 10; res = char(x + '0') + res; } res = c > 0 ? '1' + res : res; return res; } }; 上述code一次AC,查看discuss优秀方案,和我的思路相近,有可借鉴的地方,比如最后的修正carry可以融入循环里面,代码更美一些. Discussclass Solution { public: string addStrings(string num1,string num2) { int i = num1.size() - 1; int j = num2.size() - 1; int carry = 0; string res = ""; while(i>=0 || j>=0 || carry){ long sum = 0; if(i >= 0){sum += (num1[i] - '0');i--;} if(j >= 0){sum += (num2[j] - '0');j--;} sum += carry; carry = sum / 10; sum = sum % 10; res = res + to_string(sum); } reverse(res.begin(),res.end()); return res; } }; Reference
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |