【简单】算法nodeJs:求最大连续bit数

63 阅读1分钟

描述

对于给定的十进制整数 n,求解其二进制表示中,最长连续 1 段的长度。

输入描述:

输入一个十进制整数 n(1≦n≦5×105)。

输出描述:

输出一个整数,表示 n 的二进制表示中,最长连续 1 段的长度。

//第一种:双循环遍历
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    line = parseInt(await readline()).toString(2);
    if (line.indexOf("1") == -1) console.log(0);
    for (let i = line.length; i > 0; i--) {
        let str = "";
        for (let j = 0; j < i; j++) {
            str += "1";
        }
        if (line.indexOf(str) !== -1) return console.log(str.length);
    }
})();

//第二种:正则表达式
let numStr = Number(line).toString(2);
let arr = numStr.match(/1+/g).map(item => item.length);
let maxL = Math.max(...arr);
console.log(maxL);