以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
数据范围:
,字符串仅由'0'~‘9’构成
要求:时间复杂度
/**
* @param {string} s
* @param {string} t
* @return {string}
*/
const solve = (s,t) => {
if(!s) return t;
if(!t) return s;
let str1 = s.split('').reverse();
let str2 = t.split('').reverse();
let array = [];
let count = Math.abs(str1.length - str2.length);
let sum = 0;
if(str1.length >= str2.length){
while(count){
str2.push('0');
count--;
}
}else{
while(count){
str1.push('0');
count--;
}
}
for(let i = 0; i < str1.length; i++){
array.push((parseInt(str1[i]) + parseInt(str2[i]) + sum) % 10);
sum = ((parseInt(str1[i]) + parseInt(str2[i]) + sum) / 10) | 0;
}
if(sum) array.push('1');
return array.reverse().join('');
};
function solve( s , t ) {
let carry=0,res='';
let sArr = s.split(''),tArr=t.split('');
while(sArr.length || tArr.length){
let num = Number(sArr.pop() || 0) + Number(tArr.pop() || 0) + carry;
if(num>9){
carry = 1;
num = num % 10
}else{
carry=0;
}
res = num + res;
}
if(carry){
res = carry + res;
}
return res;
} function solve( s , t ) {
// write code here
// 首先取出大数中长度最长的
let maxLength = Math.max(s.length,t.length);
// 用0 补齐长度
s = s.padStart(maxLength,0);
t = t.padStart(maxLength,0);
// 定义加法过程中需要用到的变量
let a = 0;
let b = 0; //进位
let sum = "";
for( let i = maxLength - 1; i >=0; i--){
a = parseInt(s[i]) + parseInt(t[i]) + b;
b = Math.floor(a/10);
sum = a%10 + sum;
}
if( b == 1){
sum = "1" + sum;
}
return sum;