class Solution {
public:
string addStrings(string num1, string num2) {
}
};
415. 字符串相加
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger
), 也不能直接将输入的字符串转换为整数形式。
示例 1:
输入:num1 = "11", num2 = "123" 输出:"134"
示例 2:
输入:num1 = "456", num2 = "77" 输出:"533"
示例 3:
输入:num1 = "0", num2 = "0" 输出:"0"
提示:
1 <= num1.length, num2.length <= 104
num1
和num2
都只包含数字 0-9
num1
和num2
都不包含任何前导零原站题解
javascript 解法, 执行用时: 52 ms, 内存消耗: 43.5 MB, 提交时间: 2023-07-17 09:26:53
/** * @param {string} num1 * @param {string} num2 * @return {string} */ var addStrings = function (num1, num2) { let i = num1.length - 1; let j = num2.length - 1; const ans = []; for (let c = 0; i >= 0 || j >= 0 || c; --i, --j) { c += i < 0 ? 0 : parseInt(num1.charAt(i), 10); c += j < 0 ? 0 : parseInt(num2.charAt(j), 10); ans.push(c % 10); c = Math.floor(c / 10); } return ans.reverse().join(''); };
golang 解法, 执行用时: 0 ms, 内存消耗: 2.4 MB, 提交时间: 2023-07-17 09:26:36
func addStrings(num1 string, num2 string) string { i, j := len(num1)-1, len(num2)-1 ans := []byte{} for c := 0; i >= 0 || j >= 0 || c > 0; i, j = i-1, j-1 { if i >= 0 { c += int(num1[i] - '0') } if j >= 0 { c += int(num2[j] - '0') } ans = append(ans, byte(c%10+'0')) c /= 10 } for i, j := 0, len(ans)-1; i < j; i, j = i+1, j-1 { ans[i], ans[j] = ans[j], ans[i] } return string(ans) }
python3 解法, 执行用时: 40 ms, 内存消耗: 16.5 MB, 提交时间: 2023-07-17 09:26:19
class Solution: def addStrings(self, num1: str, num2: str) -> str: i, j = len(num1) - 1, len(num2) - 1 ans = [] c = 0 while i >= 0 or j >= 0 or c: a = 0 if i < 0 else int(num1[i]) b = 0 if j < 0 else int(num2[j]) c, v = divmod(a + b + c, 10) ans.append(str(v)) i, j = i - 1, j - 1 return "".join(ans[::-1])
java 解法, 执行用时: 1 ms, 内存消耗: 40.5 MB, 提交时间: 2023-07-17 09:25:52
class Solution { public String addStrings(String num1, String num2) { int i = num1.length() - 1, j = num2.length() - 1; StringBuilder ans = new StringBuilder(); for (int c = 0; i >= 0 || j >= 0 || c > 0; --i, --j) { int a = i < 0 ? 0 : num1.charAt(i) - '0'; int b = j < 0 ? 0 : num2.charAt(j) - '0'; c += a + b; ans.append(c % 10); c /= 10; } return ans.reverse().toString(); } }
golang 解法, 执行用时: 8 ms, 内存消耗: 6.8 MB, 提交时间: 2022-08-20 12:10:53
func addStrings(num1 string, num2 string) string { add := 0 ans := "" for i, j := len(num1) - 1, len(num2) - 1; i >= 0 || j >= 0 || add != 0; i, j = i - 1, j - 1 { var x, y int if i >= 0 { x = int(num1[i] - '0') } if j >= 0 { y = int(num2[j] - '0') } result := x + y + add ans = strconv.Itoa(result%10) + ans add = result / 10 } return ans }
python3 解法, 执行用时: 48 ms, 内存消耗: 15 MB, 提交时间: 2021-08-05 17:21:17
class Solution: def addStrings(self, num1, num2): """ :type num1: str :type num2: str :rtype: str """ return str(int(num1) + int(num2))
python3 解法, 执行用时: 52 ms, 内存消耗: N/A, 提交时间: 2018-09-21 16:30:41
class Solution: def addStrings(self, num1, num2): """ :type num1: str :type num2: str :rtype: str """ return str(int(num1) + int(num2))