067.二进制求和
作者:沉默王二
发布时间:2022-12-20T11:32:29.306+0800
本题解同时收录在星球专栏《二哥的 LeetCode 刷题笔记》中,专栏托管在语雀平台上(更方便你沉浸式阅读和做笔记,数学表达公式也能显示出来),访问地址和密码:https://t.zsxq.com/6iuzn6I
067.二进制求和
**
**
题意
给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。
难度
简单
示例
示例 1:
输入:a = "11", b = "1"
示例 2:
输入:a = "1010", b = "1011"
分析
我们先前做过 002.两数相加 ,其实和本题差不多,只不过是把链表换成了字符串,把十进制换成了二进制。
我们还是这样来做,从低位到高位依次将每个二进制数相加,并且记录相应的进位。十进制是逢十进一,二进制则是逢二进一,把先前代码中的10用2替换即可。
class Solution {
StringBuilder res = new StringBuilder(); int upper = 0; for(int i = a.length() - 1,j = b.length() - 1;i >= 0 || j >= 0;i--,j--){ int nowPos = upper; nowPos += i >= 0 ? a.charAt(i) - '0' : 0; nowPos += j >= 0 ? b.charAt(j) - '0' : 0; upper = nowPos / 2; nowPos %= 2; res.append(nowPos); } if(upper != 0) res.append(upper); res.reverse(); return res.toString(); }}
别忘了,因为我们是从低位到高位来做的,所以必须要翻转一下,同时,要考虑最后一位是否会产生进位,如果产生进位,同样需要将这个纳入答案当中。
总结
简单题,同样需要认真地对待,在一些时候,我们只有一次的提交机会,所以不能因为题目简单,就轻视它,最终惩罚的还是我们自己。
力扣链接:https://leetcode.cn/problems/add-binary/
一步一个脚印
不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。
PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。
一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 1200 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!
本题解同时收录在星球专栏《二哥的 LeetCode 刷题笔记》中,专栏托管在语雀平台上(更方便你沉浸式阅读和做笔记,数学表达公式也能显示出来),访问地址和密码:https://t.zsxq.com/6iuzn6I
067.二进制求和
**
**
题意
给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。
难度
简单
示例
示例 1:
输入:a = "11", b = "1"
示例 2:
输入:a = "1010", b = "1011"
分析
我们先前做过 002.两数相加 ,其实和本题差不多,只不过是把链表换成了字符串,把十进制换成了二进制。
我们还是这样来做,从低位到高位依次将每个二进制数相加,并且记录相应的进位。十进制是逢十进一,二进制则是逢二进一,把先前代码中的10用2替换即可。
class Solution {
StringBuilder res = new StringBuilder(); int upper = 0; for(int i = a.length() - 1,j = b.length() - 1;i >= 0 || j >= 0;i--,j--){ int nowPos = upper; nowPos += i >= 0 ? a.charAt(i) - '0' : 0; nowPos += j >= 0 ? b.charAt(j) - '0' : 0; upper = nowPos / 2; nowPos %= 2; res.append(nowPos); } if(upper != 0) res.append(upper); res.reverse(); return res.toString(); }}
别忘了,因为我们是从低位到高位来做的,所以必须要翻转一下,同时,要考虑最后一位是否会产生进位,如果产生进位,同样需要将这个纳入答案当中。
总结
简单题,同样需要认真地对待,在一些时候,我们只有一次的提交机会,所以不能因为题目简单,就轻视它,最终惩罚的还是我们自己。
力扣链接:https://leetcode.cn/problems/add-binary/
一步一个脚印
不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。
PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。
一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 1200 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!
本题解同时收录在星球专栏《二哥的 LeetCode 刷题笔记》中,专栏托管在语雀平台上(更方便你沉浸式阅读和做笔记,数学表达公式也能显示出来),访问地址和密码:https://t.zsxq.com/6iuzn6I
067.二进制求和
**
**
题意
给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。
难度
简单
示例
示例 1:
输入:a = "11", b = "1"
示例 2:
输入:a = "1010", b = "1011"
分析
我们先前做过 002.两数相加 ,其实和本题差不多,只不过是把链表换成了字符串,把十进制换成了二进制。
我们还是这样来做,从低位到高位依次将每个二进制数相加,并且记录相应的进位。十进制是逢十进一,二进制则是逢二进一,把先前代码中的10用2替换即可。
class Solution {
StringBuilder res = new StringBuilder(); int upper = 0; for(int i = a.length() - 1,j = b.length() - 1;i >= 0 || j >= 0;i--,j--){ int nowPos = upper; nowPos += i >= 0 ? a.charAt(i) - '0' : 0; nowPos += j >= 0 ? b.charAt(j) - '0' : 0; upper = nowPos / 2; nowPos %= 2; res.append(nowPos); } if(upper != 0) res.append(upper); res.reverse(); return res.toString(); }}
别忘了,因为我们是从低位到高位来做的,所以必须要翻转一下,同时,要考虑最后一位是否会产生进位,如果产生进位,同样需要将这个纳入答案当中。
总结
简单题,同样需要认真地对待,在一些时候,我们只有一次的提交机会,所以不能因为题目简单,就轻视它,最终惩罚的还是我们自己。
力扣链接:https://leetcode.cn/problems/add-binary/
一步一个脚印
不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。
PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。
一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 1200 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!
知识星球
扫码加入星球
查看更多优质内容
https://wx.zsxq.com/mweb/views/joingroup/join_group.html?group_id=15522885221412