当前位置:网站首页>[算法] 剑指offer2 golang 面试题2:二进制加法
[算法] 剑指offer2 golang 面试题2:二进制加法
2022-07-06 09:18:00 【邓嘉文Jarvan】
[算法] 剑指offer2 golang 面试题2:二进制加法
题目1:
给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。
输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = “11”, b = “10”
输出: “101”
示例 2:
输入: a = “1010”, b = “1011”
输出: “10101”
提示:
每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。
1 <= a.length, b.length <= 10^4
字符串如果不是 “0” ,就都不含前导零。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/JFETK5
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路1: 模拟二进制加法
模拟二进制加法时间复杂度 O(n)
代码
func addBinary(a string, b string) string {
//思路: 模拟二进制计算
length := len(a)
if len(b) > len(a) {
length = len(b)
}
//构造返回
resBs := make([]byte, length)
//从后往前指向的指针
aP, bP := len(a)-1, len(b)-1
//是否进位
up := 0
for i := len(resBs) - 1; i >= 0; i-- {
var aByte byte = '0'
var bByte byte = '0'
if aP >= 0 {
aByte = a[aP]
aP--
}
if bP >= 0 {
bByte = b[bP]
bP--
}
// 统计个数
count1 := 0
if aByte == '1' {
count1++
}
if bByte == '1' {
count1++
}
count1 += up
//通过个数确定当前值和up
if count1 == 0 {
up = 0
resBs[i] = '0'
} else if count1 == 1 {
up = 0
resBs[i] = '1'
} else if count1 == 2 {
up = 1
resBs[i] = '0'
} else {
up = 1
resBs[i] = '1'
}
}
//最后的up
res := string(resBs)
if up == 1 {
res = "1" + res
}
return res
}
测试
边栏推荐
- Mysql database index
- Meanings and differences of PV, UV, IP, VV, CV
- Naive Bayesian theory derivation
- Particle system for introduction to unity3d Foundation (attribute introduction + case production of flame particle system)
- [leetcode622]设计循环队列
- [offer78] merge multiple ordered linked lists
- 抗差估计在rtklib的pntpos函数(标准单点定位spp)中的c代码实现
- Talking about the startup of Oracle Database
- Office提示您的许可证不是正版弹框解决
- [Yu Yue education] guide business reference materials of Wuxi Vocational and Technical College of Commerce
猜你喜欢
341. Flatten nested list iterator
SVN更新后不出现红色感叹号
编译原理:源程序的预处理及词法分析程序的设计与实现(含代码)
Unity3D基础入门之粒子系统(属性介绍+火焰粒子系统案例制作)
First use of dosbox
Database course design: college educational administration management system (including code)
ESP8266连接onenet(旧版MQTT方式)
FairyGUI循环列表
Mixed use of fairygui button dynamics
Fairygui joystick
随机推荐
The service robots that have been hyped by capital and the Winter Olympics are not just a flash in the pan
Particle system for introduction to unity3d Foundation (attribute introduction + case production of flame particle system)
Solution to the problem of automatic login in Yanshan University Campus Network
Detailed explanation of truncate usage
微信小程序开发心得
MySQL time, time zone, auto fill 0
Flink late data processing (3)
[Offer29] 排序的循环链表
2021.11.10 compilation examination
[leetcode622]设计循环队列
[leetcode622] design circular queue
(课设第一套)1-4 消息传递接口 (100 分)(模拟:线程)
ESP8266连接onenet(旧版MQTT方式)
[leetcode15] sum of three numbers
InnoDB dirty page refresh mechanism checkpoint in MySQL
(5) Introduction to R language bioinformatics -- ORF and sequence analysis
Unity3D摄像机,键盘控制前后左右上下移动,鼠标控制旋转、放缩
Gateway fails to route according to the service name, and reports an error service unavailable, status=503
Theoretical derivation of support vector machine
(the first set of course design) sub task 1-5 317 (100 points) (dijkstra: heavy edge self loop)