首页 > 字节跳动面试算法题,36进制加法
头像
Bellamn
编辑于 2020-07-30 23:00
+ 关注

字节跳动面试算法题,36进制加法

当时没写出来,现在补一个
function  add(str1,str2){
    let map = [0,1,2,3,4,5,6,7,8,9, "a","b","c","d","e","f","g",
               "h","i","j","k","l","m","n","o","p","q","r", "s","t",
               "u", "v", "w", "x", "y", "z"];
    let st1 = str1.split("").reverse();
    let st2 = str2.split("").reverse();
    let res = [];
    let inp = 0;
    let i = 0;
    for( ;i< st1.length && i < st2.length; i++){
         let num =charAdd(st1[i], st2[i], inp);
         res.unshift(map[num % 36]);
         inp = num / 36;
       }
    
    let remain = st1.length-1 > i ? st1 : st2;
    for( ;i < remain.length; i++){
         let num =charAdd(0, remain[i], inp)
         res.unshift(map[num % 36])
         inp = num / 36 >>> 0
    }
    if(!!inp){
       res.unshift(map[inp])
    }
   return res.join("")
}
function charAdd(char1,char2,inp){
    let num1 = tranNum(char1)
    let num2 = tranNum(char2)
    let inpN = tranNum(inp) 
    return num1+num2 + inpN
}
function tranNum(ch){
    if( ch >= "0" && ch <= "9"){return +ch}
     else{
         return ch.charCodeAt(0) - 'a'.charCodeAt(0) + 10
     }
}



全部评论

(2) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐