LeetCode 1404. 将二进制表示减到 1 的步骤数(字符串加法)
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 的步骤数(字符串加法)相关推荐
- leetcode 1404. 将二进制表示减到 1 的步骤数
leetcode 1404. 将二进制表示减到 1 的步骤数 给你一个以二进制形式表示的数字 s .请你返回按下述规则将其减少到 1 所需要的步骤数: 如果当前数字为偶数,则将其除以 2 . 如果当前 ...
- LeetCode 5377. 将二进制表示减到 1 的步骤数
5377. 将二进制表示减到 1 的步骤数 思路:先变成整数,在运算.C++变成整数会溢出,所以用pyhton,//代表整除 class Solution:def numSteps(self, s: ...
- LeetCode5377. 将二进制表示减到1的步骤数
LeetCode5377. 将二进制表示减到 1 的步骤数 文章目录 LeetCode5377. 将二进制表示减到 1 的步骤数 题目描述 解题思路 AC代码 题目描述 给你一个以二进制形式表示的数字 ...
- LeetCode 1017. 负二进制转换(负数进制转换)
1. 题目 给出数字 N,返回由若干 "0" 和 "1"组成的字符串,该字符串为 N 的负二进制(base -2)表示. 除非字符串就是 "0&quo ...
- LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)
LeetCode--1888. 使二进制字符串字符交替的最少反转次数[Minimum Number of Flips to Make the Binary String Alternating][中等 ...
- 数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现
数字集成电路及其版图设计 带有预置数功能的8位二进制加减计数器设计及版图实现 一.目的: 1.熟悉数字集成电路设计的基本流程: 2.熟悉虚拟机的安装及使用方法: 3.熟悉Linux系统及vi编辑器的操 ...
- LeetCode 题 - 67. 二进制求和 python实现
题目 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" ...
- LeetCode:67. 二进制求和(python、c++)
题目描述 给你两个二进制字符串,返回它们的和(用二进制表示). 输入为 非空 字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1&qu ...
- LeetCode——1803. 统计异或值在范围内的数对有多少(Count Pairs With XOR in a Range)[困难]——分析及代码(Java)
LeetCode--1803. 统计异或值在范围内的数对有多少[Count Pairs With XOR in a Range][困难]--分析及代码[Java] 一.题目 二.分析及代码 1. 暴力 ...
最新文章
- C++ 类的静态成员详细讲解
- 基于WebForm的Front Controller模式框架
- 用7*7的卷积核分类9*9的图片到底应该用几个卷积核?55个
- Android开发之JNI(一)--HelloWorld及遇到的错误解析
- Python基础教程:对象及数字对象与数学运算
- TensorFlow 2.0 - 自定义模型、训练过程
- 虚拟路由器冗余协议-VRRP
- pyqt5实现窗口跳转并关闭上一个窗口
- 腾讯同事要跳槽,问我背包问题具体咋回事,我直接甩给他这篇!
- c语言数组的地址传递,c语言函数传递数组_c语言函数数组地址传递没有输出
- 疯了! Python 成功预测前三场比赛,快看今天的?(附代码及比赛时间表)
- 2022 抖音记录美好生活
- CANopen dsp402 对象字典 603F 错误码
- 性能之颠-应用程序性能技术
- SAP ABAP loop at Assigning
- android vrs技术,步步高 vivo V1/Y1 智能手机音质测评报告 VRS[vivo signal
- c语言步进电机驱动程序不正常怎么办,步进电机【C语言驱动程序】
- Android本地视频播放器开发--搜索本地视频(1)
- 程序员保护好自己的颈椎
- 618小红书品牌营销复盘「保姆级教学」 !
热门文章
- 8数据提供什么掩膜产品_博硕能为你提供什么产品?
- C# 两个类之间传递数据
- oracle打开当前表的编辑,oracle sqlplus常用命令
- java微信web支付开发_微信支付java开发详细第三方支付功能开发之支付宝web端支...
- 简单的web框架(python)
- Python爬虫入门教程 22-100 CSDN学院课程数据抓取
- Sublime text3 代码格式化插件vue
- sort和qsort函数
- Android开发实践:常用NDK命令行参数
- VS2019编译 当前最新版chromium