layout: posttitle: PHP 实现字符串相加
subtitle: PHP 实现字符串相加
date: 2020-08-13
author: he xiaodong
header-img: img/default-post-bg.jpg
catalog: true
tags:
- Go
- PHP
- LeetCode
- 字符串相加

PHP 实现字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

提示:

  • num1 和num2 的长度都小于 5100
  • num1 和num2 都只包含数字 0-9
  • num1 和num2 都不包含任何前导零

你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-strings

解题思路

一位一位的相加,余数累连,判断最后为 0 了,不再循环

代码
  1. class Solution {
  2. /**
  3. * @param String $num1
  4. * @param String $num2
  5. * @return String
  6. */
  7. function addStrings($num1, $num2) {
  8. $cur = 0;
  9. $i = strlen($num1) - 1;
  10. $j = strlen($num2) - 1;
  11. $str = '';
  12. $carry = 0;
  13. while ($i >= 0 || $j >= 0 || $carry) {
  14. $cur = $carry;
  15. if ($i >= 0) {
  16. $cur += $num1[$i--];
  17. }
  18. if ($j >= 0) {
  19. $cur += $num2[$j--];
  20. }
  21. $carry = floor($cur / 10); // 向下取整,最后一次 0 的情况就不再循环
  22. $str = $cur % 10 . $str; // 累连求余之后的结果, .$str 的操作可以避免反转结果
  23. }
  24. return $str;
  25. }
  26. }

最后恰饭 阿里云全系列产品/短信包特惠购买 中小企业上云最佳选择 阿里云内部优惠券