欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 【C++算法】63.字符串_二进制求和

【C++算法】63.字符串_二进制求和

2025/4/20 7:09:12 来源:https://blog.csdn.net/hlyd520/article/details/147351229  浏览:    关键词:【C++算法】63.字符串_二进制求和

文章目录

    • 题目链接:
    • 题目描述:
    • 解法
    • C++ 算法代码:


题目链接:

67. 二进制求和


题目描述:

cd325ec00d0f8d4f7ea6ecb8b4d4e92f


解法

高精度加法

解法:模拟列竖式运算


C++ 算法代码:

class Solution 
{
public:string addBinary(string a, string b) {// 二进制字符串相加算法// 基本思路:从右到左(低位到高位)逐位相加,处理进位,类似于手工计算string ret;            // 存储结果的字符串int cur1 = a.size() - 1;  // 指向字符串a的最后一位(最低位)int cur2 = b.size() - 1;  // 指向字符串b的最后一位(最低位)int t = 0;            // 进位值,初始为0// 循环条件:只要a、b还有位没处理完,或者还有进位,就继续计算while(cur1 >= 0 || cur2 >= 0 || t){// 如果a还有未处理的位,将其转为数字并加入当前位的计算// 注意:字符'0'的ASCII值是48,'1'的ASCII值是49,所以减去'0'可以得到数字值if(cur1 >= 0) t += a[cur1--] - '0';// 如果b还有未处理的位,将其转为数字并加入当前位的计算if(cur2 >= 0) t += b[cur2--] - '0';// 当前位的结果是t对2取余(0或1),加上'0'转回字符ret += t % 2 + '0';// t除以2得到进位值(0或1)t /= 2;}// 由于计算是从低位到高位,但添加到ret是从左到右,所以需要反转结果reverse(ret.begin(), ret.end());return ret;}
};

版权声明:

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

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

热搜词