大数相加Java
题目
以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
分析
两个字符串,定义两个指针,分别从这两个字符串的结尾开始遍历,因为可能字符串1比字符串2长度要长,因此只要两者其中有一个还没遍历玩,另一个就用0来补全空位;指针从后往前获取当前两个元素,将当前两个字符,都减去’0’,这就将字符转换成了数字,再将这两个数字和进位值相加,记得初始化进位值是0,然后定义一个变量res,res = (l+r+ans),ans = res/10; l和r分别是两个指针,ans是进位数。最后每次循环将res%10+'0’添加到StringBuilder中,最后将StringBuilder中的值翻转转换成字符串返回。
代码实现
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
public String solve (String s, String t) {
// write code here
StringBuilder builder = new StringBuilder();
int n1 = s.length()-1;
int n2 = t.length()-1;
int ans = 0;
while (n1>=0||n2>=0||ans==1){
int l = n1>=0 ? (s.charAt(n1--)-'0'):0;
int r = n2>=0 ? (t.charAt(n2--)-'0'):0;
int res = l+r+ans;
ans = res/10;
char c =(char)(res%10+'0');
builder.append(c);
}
return builder.reverse().toString();
}