将数字转为二进制字符串,先找到第一个为 1 的数,再从这里开始每遇到一个 1 都计算和上一个 1 中间的间隔,更新 max,最后返回 max 即可。
解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/** * @param {number}n * @return {number} */ var binaryGap = function (n) { const str = n.toString(2); let prev, max = 0; let i = 0; while (i < str.length) if (str[i++] == 1) prev = i; for (i = 0; i < str.length; i++) { const element = str[i]; if (element == 1) { max = Math.max(max, i - prev); prev = i; } } return max; };