以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
数据范围:
,字符串仅由'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;