欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > 力扣67. 二进制求和

力扣67. 二进制求和

2025/5/12 18:37:08 来源:https://blog.csdn.net/m0_57879843/article/details/144273663  浏览:    关键词:力扣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" ,就不含前导零

代码:

class Solution {
public:string addBinary(string a, string b) {string res;int i = a.size()-1, j = b.size()-1;int jin = 0, yu = 0;while(i >= 0 && j >= 0){yu = ((a[i]-'0') + (b[j]-'0') + jin) % 2;if(yu == 1) res = '1' + res;else res = '0' + res;jin = ((a[i]-'0') + (b[j]-'0') + jin) / 2;i--;j--;}while(i >= 0){yu = ((a[i]-'0') + jin) % 2;if(yu == 1) res = '1' + res;else res = '0' + res;jin = ((a[i]-'0') + jin) / 2;i--;}while(j >= 0){yu = ((b[j]-'0') + jin) % 2;if(yu == 1) res = '1' + res;else res = '0' + res;jin = ((b[j]-'0') + jin) / 2;j--;}if(jin == 1) res = '1' + res;return res;}
};

解题思路:

(1)使用模2加分进行求解,进位表示为 jin,余数表示为 yu。

(2)将每个字符串从尾部开始遍历,与 jin 相加后模2,余数 yu 即加入 res 的头部。

(3)接着,判断较长字符串剩下的字符。

(4)最后,根据进位 jin 再做一次判断。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词