婚纱摄影网站排名,阿里云 拦截网站,wordpress添加账户余额,wordpress播放视频播放题意#xff1a;
给定两个字符串形式的非负整数 num1 和num2 #xff0c;计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库#xff08;比如 BigInteger#xff09;#xff0c; 也不能直接将输入的字符串转换为整数形式。
示例 1#xff…题意
给定两个字符串形式的非负整数 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 10^4num1 和num2 都只包含数字 0-9num1 和num2 都不包含任何前导零
题目来源 https://leetcode.cn/problems/add-strings/description/
解题方法
方法一长度以0补齐从个位开始相加从后往前判断是否进一
// 长度以0补齐从个位开始相加判断是否进一
function addStrings($num1, $num2) {$strLen1 strlen($num1);$strLen2 strlen($num2);// 找到长的字符串的长度用于循环$strlen $strLen1 $strLen2 ? $strLen1 : $strLen2;// 短的字符串前补0if($strLen1 $strLen2){$num2 str_repeat(0, $strLen1 - $strLen2) . $num2;}else{$num1 str_repeat(0, $strLen2 - $strLen1) . $num1;}$result ; //结果$is_add_one 0; //两者相加是否大于等于10来判断是否进行加一for($i $strlen - 1; $i 0; $i--){if(($num1[$i] $num2[$i] $is_add_one) 10){ //如果大于等于10取个位进一$result strval($num1[$i] $num2[$i] $is_add_one)[1] . $result;$is_add_one 1;if($i 0){$result 1 . $result; //循环到最大位时前补一}}else{ //小于10时相加即可$result strval($num1[$i] $num2[$i] $is_add_one) . $result;$is_add_one 0;}}return $result;
}方法二 从后向前对应的位置的数字相加如果结果大于 9需要进位 难点 1.难点进位处理 2.最高位进位处理 此方法参考 作者Zou Zhipeng 链接https://leetcode.cn/problems/add-strings/solutions/202746/php-jie-fa-by-zzpwestlife-51/ 来源力扣LeetCode
// 从后向前对应的位置的数字相加如果结果大于 9需要进位
// 1.难点进位处理 2.最高位进位处理
function addStrings($num1, $num2) {$len1 strlen($num1);$len2 strlen($num2);if($len1 0) return $num2;if($len2 0) return $num1;// 从最低位开始处理$i $len1 - 1;$j $len2 - 1;// 进位标记$carry 0;$return ;// 使用该判断条件一次遍历处理完所有情况while ($i 0 || $j 0 || $carry){$sum $carry;if($i 0){$sum substr($num1, $i, 1);$i--;}if($j 0){$sum substr($num2, $j, 1);$j--;}// 进位处理$carry floor($sum / 10);$return $sum % 10 . $return;}return $return;
}