一、题目描述
以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
(字符串长度不大于100000,保证字符串仅由’0’~'9’这10种字符组成)
示例1
输入:"1","99"
返回值:"100"
说明
- 1+99=100
二、解决
1、转字符解决
思路: 比较直观,重要的还是小细节。
代码:
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
public String solve (String s, String t) {
char[] cs = s.toCharArray();
char[] ct = t.toCharArray();
char[] res = new char[Math.max(cs.length, ct.length) + 1];
int carry = 0, i = res.length-1, j = cs.length-1, k = ct.length-1;
while (j >= 0 || k >= 0 || carry != 0) {
int num1 = j >= 0 ? cs[j--] - '0' : 0;
int num2 = k >= 0 ? ct[k--] - '0' : 0;
// System.out.println(num1+" "+num2);
int sum = num1 + num2 + carry;
carry = sum/10;
res[i--] = (char)(sum%10+'0');
}
return i == 0 ? String.valueOf(res).substring(1) : String.valueOf(res);
}
}
时间复杂度:
O
(
n
)
O(n)
O(n)
空间复杂度:
O
(
n
)
O(n)
O(n)