今天我们来说一个非常经典的面试题,这道题在我们应聘前端工程师时,是经常遇到的,下面就让我们来说一下吧,希望能对你有所帮助!
有一个这样的需求:给定两个数字,比如我们设置第一个数字为1111111881111111119,第二个数字为222222222222228554552222,让你用代码实现两个数值的相加结果。此时,我们要怎么做才能坐到这个需求呢? 下面来放代码
// 将两个数字定义为字符串
var str1 = "1111111881111111119"
var str2 = "222222222222228554552222"
//得到str1、str2字符串的长度
var len1 = str1.length
var len2 = str2.length
// 比较str1和str2的长度,返回较大的那个数
var maxLen = Math.max(len1, len2)
// 用0将str1补齐
// var str11 = str1.padStart(len2, '0')
// console.log(str11);
var sum = 0; //两数相加的总和
var tmp = 0; //定义tmp 存放进位
var mysum = ''; //接收拼接后的sum
// 遍历字符串,以最长的那个字符串为准
for (var i = 0; i < maxLen; i++) {
// string.charAt(index) index表示字符串中某个数值的数字,即字符在字符串中的位置
var sum = Number(str1.charAt(len1 - i - 1)) + Number(str2.charAt(len2 - i - 1)) + tmp;
if (sum > 9) {
// 11%10 1 即个位为1 十位进一
sum = sum % 10 //对有进位的数值取余
tmp = 1
} else {
tmp = 0
}
mysum = sum + mysum
}
console.log('两数相加的结果为:'+mysum);//两数相加的结果为:222223333334109665663341
这样的代码你看懂了吗?当然也就无惧这样的面试题啦!