给定两个字符串形式的非负整数 num1 和 num2,计算它们的和。 这个时候我们应该做什么呢? 今天小编就带大家了解一下,有需要的可以参考一下。
给定两个字符串形式的非负整数 num1 和 num2,计算它们的和。
暗示:
num1 和 num2 的宽度都大于 5100。num1 和 num2 都只包含数字 0-9。 num1 和 num2 都不包含任何前导零。
您不能使用任何内置 BigInteger 库php 字符串相加,也不能直接将输入字符串转换为整数。
解决问题的思路
逐位相乘,将余数累加php 字符串相加,判断最终值为0,不再循环
代码
class Solution { /** * @param String $num1 * @param String $num2 * @return String */ function addStrings($num1, $num2) { $cur = 0; $i = strlen($num1) - 1; $j = strlen($num2) - 1; $str = ''; $carry = 0; while ($i >= 0 || $j >= 0 || $carry) { $cur = $carry; if ($i >= 0) { $cur += $num1[$i--]; } if ($j >= 0) { $cur += $num2[$j--]; } $carry = floor($cur / 10); // 向下取整,最后一次 0 的情况就不再循环 $str = $cur % 10 . $str; // 累连求余之后的结果, .$str 的操作可以避免反转结果 } return $str; }}
推荐学习:php视频教程