做外贸兼职的网站有哪些,wordpress 图片上传,新网站建设教程,成立公司后需要做的事情一、题目描述 力扣链接#xff1a;力扣415.字符串相加 给定两个字符串形式的非负整数 num1 和num2 #xff0c;计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库#xff08;比如 BigInteger#xff09;#xff0c; 也不能直接将输入的字符串…一、题目描述 力扣链接力扣415.字符串相加 给定两个字符串形式的非负整数 num1 和num2 计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库比如 BigInteger 也不能直接将输入的字符串转换为整数形式。
示例 1
输入num1 “11”, num2 “123” 输出“134”
二、思路解析
这里题目不允许使用字符串转整数的函数那么还有一个方法那就是对字符串的每一个字符都减去0就可以得到对应的数字。
在很多编程语言中字符和数字之间存在ASCII码或Unicode码的关系。ASCII码是一种将字符映射到数字的编码方式。在ASCII码中数字字符0到9的编码是连续的依次为48到 57。因此当你从字符 ‘0’ 中减去 ‘0’ 时实际上是将字符的ASCII码值减去 ‘0’ 的ASCII码值得到的结果就是字符所表示的数字。
举例来说
‘0’ 的ASCII码是 48所以 ‘0’ - ‘0’ 就是 48 - 48结果是 0。‘1’ 的ASCII码是 49所以 ‘1’ - ‘0’ 就是 49 - 48结果是 1。‘2’ 的ASCII码是 50所以 ‘2’ - ‘0’ 就是 50 - 48结果是 2。以此类推直到 ‘9’ 的ASCII码是 57所以 ‘9’ - ‘0’ 就是 57 - 48结果是 9。
三、C题解
根据以上结论不难写出代码
class Solution {
public:string addStrings(string num1, string num2) {int m num1.size(), n num2.size();int i m - 1, j n - 1, carry 0; // carry代表进位string result;while (i 0 || j 0 || carry ! 0) {int x i 0 ? num1[i] - 0 : 0;int y j 0 ? num2[j] - 0 : 0;int sum x y carry;carry sum / 10;result.push_back(0 sum % 10);--i;--j;}// 因为是倒着push_back的所以要反过来reverse(result.begin(), result.end());return result;}
};