问题描述
以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
(字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成)
示例1
输入
"1","99"返回值
"100"说明
1+99=100
解题思路
主要解题思路就是按位计算每一位的和以及相应的进位。然后使用StringBuilder来保存,最后如果每一位都计算完了,看一下是否还有进位,然后有的话加到结尾。
最后调用StringBuilder的reverse方法反转一下整个字符串,再输出为String格式。
Java代码
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
public String solve (String s, String t) {
if(s==null || "".equals(s)) return t;
if(t==null || "".equals(t)) return s;
int i=s.length()-1,j = t.length()-1;
int m1=0,m2=0,carry = 0;
StringBuilder sb = new StringBuilder();
while(i>=0 || j>=0){
if(i>=0) m1 = s.charAt(i)-'0';
else m1=0;
if(j>=0) m2 = t.charAt(j)-'0';
else m2=0;
int sum = m1+m2+carry;
carry = sum/10;
sb.append((char)((sum%10)+'0'));
i--;
j--;
}
if(carry!=0) sb.append('1');
sb.reverse();
return sb.toString();
}
}