1. 题目

给你一个以二进制形式表示的数字 s 。请你返回按下述规则将其减少到 1 所需要的步骤数:

  • 如果当前数字为偶数,则将其除以 2 。
  • 如果当前数字为奇数,则将其加上 1 。

题目保证你总是可以按上述规则将测试用例变为 1 。

示例 1:
输入:s = "1101"
输出:6
解释:"1101" 表示十进制数 13 。
Step 1) 13 是奇数,加 1 得到 14
Step 2) 14 是偶数,除 2 得到 7
Step 3) 7  是奇数,加 1 得到 8
Step 4) 8  是偶数,除 2 得到 4
Step 5) 4  是偶数,除 2 得到 2
Step 6) 2  是偶数,除 2 得到 1  示例 2:
输入:s = "10"
输出:1
解释:"10" 表示十进制数 2 。
Step 1) 2 是偶数,除 2 得到 1 示例 3:
输入:s = "1"
输出:0提示:
1 <= s.length <= 500
s 由字符 '0' 或 '1' 组成。
s[0] == '1'

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-of-steps-to-reduce-a-number-in-binary-representation-to-one
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 字符串加法,除以2直接 pop_back()
class Solution {public:int numSteps(string s) {int count = 0;while(s != "1"){if(s.back()=='0')s.pop_back();//右移除以2elseaddone(s);count++;}return count;}void addone(string &s){int i = s.size()-1, carry = 1;while(i >= 0 && carry){if(s[i]=='0'){s[i] = '1';carry = 0;}else{s[i] = '0';carry = 1;}i--;}if(carry)s.insert(0,"1");}
};

0 ms 6.5 MB

LeetCode 1404. 将二进制表示减到 1 的步骤数(字符串加法)相关推荐

  1. leetcode 1404. 将二进制表示减到 1 的步骤数

    leetcode 1404. 将二进制表示减到 1 的步骤数 给你一个以二进制形式表示的数字 s .请你返回按下述规则将其减少到 1 所需要的步骤数: 如果当前数字为偶数,则将其除以 2 . 如果当前 ...

  2. LeetCode 5377. 将二进制表示减到 1 的步骤数

    5377. 将二进制表示减到 1 的步骤数 思路:先变成整数,在运算.C++变成整数会溢出,所以用pyhton,//代表整除 class Solution:def numSteps(self, s: ...

  3. LeetCode5377. 将二进制表示减到1的步骤数

    LeetCode5377. 将二进制表示减到 1 的步骤数 文章目录 LeetCode5377. 将二进制表示减到 1 的步骤数 题目描述 解题思路 AC代码 题目描述 给你一个以二进制形式表示的数字 ...

  4. LeetCode 1017. 负二进制转换(负数进制转换)

    1. 题目 给出数字 N,返回由若干 "0" 和 "1"组成的字符串,该字符串为 N 的负二进制(base -2)表示. 除非字符串就是 "0&quo ...

  5. LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)

    LeetCode--1888. 使二进制字符串字符交替的最少反转次数[Minimum Number of Flips to Make the Binary String Alternating][中等 ...

  6. 数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现

    数字集成电路及其版图设计 带有预置数功能的8位二进制加减计数器设计及版图实现 一.目的: 1.熟悉数字集成电路设计的基本流程: 2.熟悉虚拟机的安装及使用方法: 3.熟悉Linux系统及vi编辑器的操 ...

  7. LeetCode 题 - 67. 二进制求和 python实现

    题目 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" ...

  8. LeetCode:67. 二进制求和(python、c++)

    题目描述 给你两个二进制字符串,返回它们的和(用二进制表示). 输入为 非空 字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1&qu ...

  9. LeetCode——1803. 统计异或值在范围内的数对有多少(Count Pairs With XOR in a Range)[困难]——分析及代码(Java)

    LeetCode--1803. 统计异或值在范围内的数对有多少[Count Pairs With XOR in a Range][困难]--分析及代码[Java] 一.题目 二.分析及代码 1. 暴力 ...

最新文章

  1. C++ 类的静态成员详细讲解
  2. 基于WebForm的Front Controller模式框架
  3. 用7*7的卷积核分类9*9的图片到底应该用几个卷积核?55个
  4. Android开发之JNI(一)--HelloWorld及遇到的错误解析
  5. Python基础教程:对象及数字对象与数学运算
  6. TensorFlow 2.0 - 自定义模型、训练过程
  7. 虚拟路由器冗余协议-VRRP
  8. pyqt5实现窗口跳转并关闭上一个窗口
  9. 腾讯同事要跳槽,问我背包问题具体咋回事,我直接甩给他这篇!
  10. c语言数组的地址传递,c语言函数传递数组_c语言函数数组地址传递没有输出
  11. 疯了! Python 成功预测前三场比赛,快看今天的?(附代码及比赛时间表)
  12. 2022 抖音记录美好生活
  13. CANopen dsp402 对象字典 603F 错误码
  14. 性能之颠-应用程序性能技术
  15. SAP ABAP loop at Assigning
  16. android vrs技术,步步高 vivo V1/Y1 智能手机音质测评报告 VRS[vivo signal
  17. c语言步进电机驱动程序不正常怎么办,步进电机【C语言驱动程序】
  18. Android本地视频播放器开发--搜索本地视频(1)
  19. 程序员保护好自己的颈椎
  20. 618小红书品牌营销复盘「保姆级教学」 !

热门文章

  1. 8数据提供什么掩膜产品_博硕能为你提供什么产品?
  2. C# 两个类之间传递数据
  3. oracle打开当前表的编辑,oracle sqlplus常用命令
  4. java微信web支付开发_微信支付java开发详细第三方支付功能开发之支付宝web端支...
  5. 简单的web框架(python)
  6. Python爬虫入门教程 22-100 CSDN学院课程数据抓取
  7. Sublime text3 代码格式化插件vue
  8. sort和qsort函数
  9. Android开发实践:常用NDK命令行参数
  10. VS2019编译 当前最新版chromium