215 words
1 minute
力扣每日一题 20260226
1404. 将二进制表示减到 1 的步骤数
观察可知,一旦发生进位,高位的 都会变成 ,而 都会变成 ,且二进制的位数也会因进位加一,导致多出一步除以 的操作,所以设字符串中的 的位置为 ,字符串长度为 。
如果 说明没有发生进位,则答案就是 ,如果 说明发生了进位,那么答案就是 加上 到 之间 的个数,再加两步( 这步的加一操作和高位除以 的操作)。
代码:
class Solution {public: int numSteps(string s) { int pos = 0, ans = s.size() - 1; for (int i = ans; i >= 0; i--) { if (s[i] == '1') { pos = i; break; } } if (pos > 0) { ans += count(s.begin() + 1, s.begin() + pos, '0') + 2; } return ans; }}; 力扣每日一题 20260226
https://fuwari.vercel.app/posts/leetcode_daily/0226/