题目的大概意思就是:把输入的一个十进制数字转为二进制,然后找出连续的1的最大长度。
我写的:
while(s=readline()){
let str=Number(s).toString(2);
let start=str.replace(/0+/g,',');//在str中匹配若干个0,用‘,’替代
let arr=start.split(',');//这是一个每一项含有1的数组,只是每一项1的个数不同
let lengthArr=[];//统计个数
arr.forEach(function(el){
lengthArr.push(el.length);
});
console.log(Math.max.apply(null,lengthArr));//找出1的最大值
}
再看看其他解答:
while(line = readline()){//s=8
var num = Number(line).toString(2);//1000
var max = 0;
var arr = num.split('0');//[ '1', '', '', '' ]
for(let i =0;i<arr.length;i++){
max = max >arr[i].length?max:arr[i].length;
}
console.log(max)
}