描述
对于给定的十进制整数 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);