美文网首页
【JS算法】nodejs中leftpad实现

【JS算法】nodejs中leftpad实现

作者: wyc0859 | 来源:发表于2022-05-03 12:27 被阅读0次

    解题思路:
    二分法,把1个数,不断的分装到2个盒子,直到分为1时,结束(用while循环)
    当盒子是奇数的时候,就拿个1放到答案圈里,就可以继续分

    function leftpad(str, length, ch) {
      let len = length - str.length;
      total = ""; //答案圈
      while (true) {
        //判断是否奇数
        if (len % 2 == 1) { 
          total += ch;
        }
        if (len == 1) {
          return total + str;
        }
        //分成2个盒子,就是乘2
        ch += ch; //因为是字符串所以用 ch+=ch
        len = parseInt(len / 2); //除2后先上取整
      }
    }
    const res = leftpad("abcd", 24, "x");
    

    1、判断是否奇数可以用位运算 (x&1) 代替
    2、除2后先上取整可以用位运算 (x>>1) 代替

    所以上面的函数可以改写为

    function leftpad2(str, length, ch) {
      let len = length - str.length;
      total = ""; 
      while (true) { 
        //判断是否奇数
        //第一次:(20 & 1)= (10100 & 1) 结果为0
        if (len & 1) { 
          total += ch;
        }
        if (len == 1) {
          return total + str;
        }
        ch += ch;   
        len = len >> 1;  
      }
    }
    

    相关文章

      网友评论

          本文标题:【JS算法】nodejs中leftpad实现

          本文链接:https://www.haomeiwen.com/subject/ybwbyrtx.html