题目
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。
示例 1:
输入:num1 = "11", num2 = "123"
输出:"134"
示例 2:
输入:num1 = "456", num2 = "77"
输出:"533"
示例 3:
输入:num1 = "0", num2 = "0"
输出:"0"
代码
class Solution {
public String addStrings(String num1, String num2) {
int flag=0;
StringBuffer str=new StringBuffer();
String s=new String();
if(num1.length()<num2.length())
{
s=num1;
num1=num2;
num2=s;
}
int i=num1.length()-1;
int j=num2.length()-1;
int sum=0;
//System.out.println("num1"+num1+"i"+i+"num2"+num2+"j"+j);
while(j>=0&&i>=0)
{
sum=Integer.valueOf(num1.charAt(i)-'0')+Integer.valueOf(num2.charAt(j)-'0')+flag;
//System.out.println("1 :"+Integer.valueOf(num1.charAt(i))+" 2: "+Integer.valueOf(num2.charAt(j)));
if(sum>9)
{
flag=1;
sum-=10;
}else flag=0;
str.insert(0,String.valueOf(sum));
i--;j--;
}
while(i>=0)
{
sum=Integer.valueOf(num1.charAt(i)-'0')+flag;
if(sum>9)
{
flag=1;
sum-=10;
}else flag=0;
str.insert(0,String.valueOf(sum));
i--;
}
if(flag==1)
str.insert(0,String.valueOf(flag));
return str.toString();
}
}
反思
通过头插实现逆序,也可以通过str.reverse().toString()