大数加法 以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
数据范围:length<10000,字符串仅由’0’~‘9’构成 要求: 空间复杂度 O(1)(仅在传入字符串上操作),时间复杂度 O(n)
示例1 输入: “1”,“99” 返回值: “100” 说明: 1+99=100
示例2 输入: “114514”,"" 复制 返回值: “114514”
思路:从字符串后面往前加,每次相加一次,下标减1,直到某字符串消耗完 就用0来加。
public class BigNumAdd {
public static String solve (String s, String t) {
StringBuilder stringBuilder = new StringBuilder();
int i=s.length()-1,j=t.length()-1,jinwei=0;
while (i>=0 || j>=0 || jinwei>0){
int x=i<0?0:s.charAt(i--)-'0';
int y=j<0?0:t.charAt(j--)-'0';
int sum =x+y+jinwei;
stringBuilder.insert(0,sum%10);
jinwei=sum/10;
}
return stringBuilder.toString();
}
}
|