字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。
示例 1: 输入:num1 = “11”, num2 = “123” 输出:“134”
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/add-strings
思路就是字符串按位进行相加,每一位可以定义为int,每次只取它的一位就好,要注意有进位的情况,当有进位时需要在下一次相加时加上进位。还有考虑当某一个字符串位数不够时,即已经超出了字符串长度时,需要在相应的位补0。 计算完之后得到的结果是逆序的,需要reverse。
class Solution {
public String addStrings(String num1, String num2) {
int i=num1.length()-1,j=num2.length()-1;
int result=0;
int a=0;
StringBuffer s = new StringBuffer();
int k=0;
int m=0;
while(i>=0||j>=0||a!=0)
{
if(i>=0)
k=num1.charAt(i)-'0';
else
k = 0;
if(j>=0)
m = num2.charAt(j)-'0';
else
m=0;
result=k+m+a;
a=result/10;
s.append(result%10);
i--;
j--;
}
s.reverse();
return s.toString();
}
}
i,j是指针,而要不要补位0,应当判断字符串长度是否已经为0,即i,j是否为0; k,m是取出的每一位的值,result是每次两位相加的结果,当然最后要的是result%10,进位a=result/10。 最后reserve一下,返回就好。