客户关系管理软件免费,新沂网站优化,电子商务中网站建设,wordpress 外链图片415.字符串相加
给定两个字符串形式的非负整数 num1 和num2 #xff0c;计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库#xff08;比如 BigInteger#xff09;#xff0c; 也不能直接将输入的字符串转换为整数形式。 思路#xff1a; 1…415.字符串相加
给定两个字符串形式的非负整数 num1 和num2 计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库比如 BigInteger 也不能直接将输入的字符串转换为整数形式。 思路 1.创建一个可变字符容器用来存储个位数/十位数/百位数等计算的结果 【注意最后要将该字符变量反转输出】 2.将num1与nums数组的长度分别赋给i和j并且一个count变量用来存储进位 3.由于未知循环次数但是已经终止循环条件因此采用while循环 -当i或j大于等于0时执行个位数/十位数/百位数等的相加操作 -- 当 i 0时取出nums数组中下标为i的值并且转换为数组类型 -‘0’-》赋给n1 --当 i 0时,则直接赋值为0 -- 当 j 0时取出nums数组中下标为i的值并且转换为数组类型 -‘0’-》赋给n2 --当 j 0时,则直接赋值为0 4.将n1n2carry相加的结果赋给sum 5.对sum进行处理如果sum10,则要进位 carry sum/10; 然后将sum%10的结果添加到字符容器中 6.因为是从末尾开始计算的因此i--j--继续执行 class Solution {public String addStrings(String num1, String num2) {
//创建一个可变字符容器用来存储个位数/十位数/百位数等计算的结果StringBuilder str new StringBuilder();int i num1.length()-1, j num2.length()-1, count 0;//由于未知循环次数但是已经终止循环条件因此采用while循环while(i 0 || j 0){int n1 i 0 ? num1.charAt(i) - 0 : 0;int n2 j 0 ? num2.charAt(j) - 0 : 0;int sum n1 n2 count;count sum / 10;str.append(sum % 10);i--;j--;}//当加到最高位时若还有进位但此时i-- 或者 j--已经为0就无法再执行sum n1 n2 count这条语句//因此还要有一个if语句判断当前count是否等于1若为真就要将结果添加到字符容器中if(count 1){str.append(count);}return str.reverse().toString();}
}