Skip to content

Commit f29f437

Browse files
committed
Create 1404.将二进制表示减到 1 的步骤数.js
1 parent 0ae4ca7 commit f29f437

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/**
2+
* @param {string} s
3+
* @return {number}
4+
*/
5+
var numSteps = function(s) {
6+
if (s.length === 1) {
7+
return s[0] === '0' ? 1 : 0;
8+
}
9+
10+
s = s.split('').reverse().map(n => +n);
11+
let i = 0;
12+
let result = 0;
13+
while (i < s.length - 1 || s[i] !== 1) {
14+
if (s[i] === 0) {
15+
i++;
16+
} else {
17+
let j = i;
18+
while (j < s.length) {
19+
s[j]++;
20+
if (s[j] > 1) {
21+
s[j] = 0;
22+
j++;
23+
} else {
24+
break;
25+
}
26+
}
27+
if (j === s.length) {
28+
s.push(1);
29+
}
30+
}
31+
result++;
32+
}
33+
return result;
34+
};

0 commit comments

Comments
 (0)