模板网站建设清单,皮皮果网站建设,制作网页添加图片,自己建设网站要花多少钱目录 1.题目2.思路3.代码实现#xff08;Java#xff09; 1.题目
给定两个字符串形式的非负整数 num1 和num2#xff0c;计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库#xff08;比如 BigInteger#xff09;#xff0c; 也不能直接将… 目录 1.题目2.思路3.代码实现Java 1.题目
给定两个字符串形式的非负整数 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
2.思路
1模拟 定义两个指针 i 和 j 分别指向 num1 和 num2 的末尾即最低位同时定义一个变量 carry 维护当前是否有进位然后从末尾到开头逐位相加即可。你可能会想两个数字位数不同怎么处理这里我们统一在指针当前下标处于负数的时候返回 0等价于对位数较短的数字进行了补零操作这样就可以除去两个数字位数不同情况的处理具体可以看下面的代码。
相关题目 LeetCode_字符串_中等_43.字符串相乘
3.代码实现Java
//思路1————模拟
class Solution {public String addStrings(String num1, String num2) {int i num1.length() - 1;int j num2.length() - 1;//进位int carry 0;StringBuilder res new StringBuilder();while (i 0 || j 0 || carry ! 0) {int x (i 0) ? num1.charAt(i) - 0 : 0;int y (j 0) ? num2.charAt(j) - 0 : 0;int val x y carry;res.append(val % 10);carry val / 10;i--;j--;}//计算完以后的答案需要翻转过来return res.reverse().toString();}
}