一、题目
描述
以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
数据范围:𝑠.𝑙𝑒𝑛𝑔𝑡ℎ, 𝑡.𝑙𝑒𝑛𝑔𝑡ℎ ≤ 100000,字符串仅由'0'~‘9’构成
要求:时间复杂度 𝑂(𝑛)O(n)
示例1
输入:
"1","99"
返回值:
"100"
说明:
1+99=100
示例2
输入:
"114514",""
返回值:
"114514"
二、思路解析
大数加法,也算是模拟题的一种。
这一类题的普遍做法,都是先从字符串的末尾开始,计算本位和进位,然后再往高位计算。
在这道题,我用的就是 tmp 这个变量来存储本位和进位的。并且, tmp 的个位数是本位,十位数则是进位。
具体实现请看下面代码👇
三、完整代码
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
public String solve (String s, String t) {
StringBuffer ret = new StringBuffer();
int i = s.length() - 1;
int j = t.length() - 1;
int tmp = 0;
while(i >= 0 || j >= 0 || tmp > 0){
if(i >= 0){
tmp += s.charAt(i--) - '0';
}
if(j >= 0){
tmp += s.charAt(j--) - '0';
}
ret.append((char)tmp % 10 + '0');
tmp /= 10;
}
return ret.reverse().toString();
}
}
以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!