力扣每日一题67:二进制求和

编程入门 行业动态 更新时间:2024-10-28 06:34:48

力扣每日一题67:二进制求和

力扣每日一题67:二进制求和

题目描述:

给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。

示例 1:

输入:a = "11", b = "1"
输出:"100"

示例 2:

输入:a = "1010", b = "1011"
输出:"10101"

提示:

  • 1 <= a.length, b.length <= 104
  • a 和 b 仅由字符 '0' 或 '1' 组成
  • 字符串如果不是 "0" ,就不含前导零

通过次数

352.1K

提交次数

665.8K

通过率

52.9%

思路和题解:

两个字符串向右对齐,模拟相加,最后剩余部分和剩下的进位模拟相加。

代码:

class Solution {
public:string addBinary(string a, string b) {string ans;int m=a.size()-1;int n=b.size()-1;int CF=0;//向右对齐,对齐部分相加while(n>=0&&m>=0){int x=CF+a[m]-'0'+b[n]-'0';CF=x/2;x=x%2;ans.insert(ans.begin(),x+'0');n--;m--;}//剩余部分与进位相加if(m>=0){while(m>=0){int x=CF+a[m]-'0';CF=x/2;x=x%2;ans.insert(ans.begin(),x+'0');m--;}}else if(n>=0){while(n>=0){int x=CF+b[n]-'0';CF=x/2;x=x%2;ans.insert(ans.begin(),x+'0');n--;}}//不全多余的进位if(CF==1) ans.insert(ans.begin(),'1');return ans;}
};

更多推荐

力扣每日一题67:二进制求和

本文发布于:2023-12-03 13:56:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1656109.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!