LeetCode 67. 二进制求和
发布日期:2021-07-01 03:15:38
浏览次数:2
分类:技术文章
本文共 1935 字,大约阅读时间需要 6 分钟。
1. 题目
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-binary 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. 解题
- 用一个变量存储进位(直白解法,代码有点长)
class Solution { public: string addBinary(string a, string b) { int i, j, one = 0; string ans; for(i = a.size()-1,j = b.size()-1; i >= 0 && j >= 0; --i,--j) { if((a[i]-'0')^(b[j]-'0')) { if(one == 0) ans = "1"+ans; else ans = "0"+ans; } else { if(a[i]== '0' && b[j]== '0') { if(one == 0) ans = "0"+ans; else { ans = "1"+ans; one = 0; } } else//都为1 { if(one == 0) { ans = "0"+ans; one = 1; } else ans = "1"+ans; } } } if(j < 0 && i >= 0) { while(i >= 0) { if((a[i]-'0')^one) { ans = "1"+ans; one = 0; } else { if(a[i]== '0' && one == 0) ans = "0"+ans; else { ans = "0"+ans; one = 1; } } i--; } if(one) ans = "1"+ans; } else // (i < 0) { while(j >= 0) { if((b[j]-'0')^one) { ans = "1"+ans; one = 0; } else { if(b[j]== '0' && one == 0) ans = "0"+ans; else { ans = "0"+ans; one = 1; } } j--; } if(one) ans = "1"+ans; } return ans; }};
转载地址:https://michael.blog.csdn.net/article/details/101211346 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月13日 08时23分33秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
实现string toHex(int)把一个十进制转换成十六进制。(完全用算法实现)
2021-07-07
内部排序算法比较
2021-07-07
函数指针和函数引用的区别
2021-07-07
哲理故事三百篇(1-50) 8
2021-07-07
有谁能,为你戴上纸戒指?
2021-07-07
有没有一篇文章,让你黯然神伤?却又牵动着你灵魂深处的希望?
2021-07-07
吵架之后-----
2021-07-07
男生和女生为什么会不一样呢?------
2021-07-07
知道什么是爱情吗?如果不知道,请看:如果在天堂遇见你,你还记不记得我是谁?
2021-07-07
大家觉得这篇文章如何?
2021-07-07
用UDP实现可靠文件传输
2021-07-07
程序人生(小说)
2021-07-07
关于CString总结
2021-07-07
写给我爱的人
2021-07-07
Linux逻辑卷
2021-07-07
Linux学习ftp
2021-07-07
Linux学习apache
2021-07-07
linux服务mariadb
2021-07-07
Linux学习dns&ddns
2021-07-07
LInux高级网络配置
2021-07-07