leetcode415字符串相加

  • 题目描述
  • 解题思路
  • 执行结果
leetcode


题目描述

给定两个字符串形式的非负整数 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 都不包含任何前导零

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/add-strings 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

法1

过程模拟: 模拟数字相加的过程,满10进1

b = s[j] + l[i] - 96 + b
   l[i] = b%10 + 48
   b /= 10
   i--
   j--

执行结果

法1

func addLtoS(l []byte, s string) string {
 for b, i, j := byte(0), len(l)-1len(s)-1; j >= 0 || b > 0; {
  if j >= 0 {
   b = s[j] + l[i] - 96 + b
   l[i] = b%10 + 48
   b /= 10
   i--
   j--
  } else {
   if i < 0 {
    b = 1
    return "1" + string(l)
   } else {
    b = l[i] - 48 + b
    l[i] = b%10 + 48
    b /= 10
    i--
   }
  }
 }
 return string(l)
}
func addStrings(num1 string, num2 string) string {
 if len(num1) > len(num2) {
  return addLtoS([]byte(num1), num2)
 }
 return addLtoS([]byte(num2), num1)
}

执行结果: 通过 显示详情 查看示例代码 添加备注

执行用时: 0 ms , 在所有 Go 提交中击败了 100.00% 的用户 内存消耗: 2.3 MB , 在所有 Go 提交中击败了 99.83% 的用户 通过测试用例: 317 / 317 炫耀一下:

法2


法3


本文由 mdnice 多平台发布

你可能感兴趣的:(后端)