我是靠谱客的博主 健壮野狼,最近开发中收集的这篇文章主要介绍力扣67二进制求和C++,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目

请点击

思路

  • 获取到字符串a与b的长度,判断哪个字符串长度大,将长度小的字符串前面补0直至长度一致
  • for循环,倒序,从a,b字符串末尾开始相加。并判断是否有进位
  • 考虑例外,就是下标0的和需要进位,因此需要对0下标的特殊处理。即,判断是否需要进位,若产生进位,则在字符串开始插入‘1’
  • 注:始终用字符串a作为和的字符串,省空间

代码

#include<iostream>
using namespace std;
string addBinary(string a, string b) {
	int aLen=a.length();
    int bLen=b.length();
    //将字符串长度小的前面补'0'
    if(aLen>bLen) b.insert(b.begin(),aLen-bLen,'0');
    else if(aLen<bLen){
    	a.insert(a.begin(),bLen-aLen,'0');
        aLen=bLen;
    }
    //倒序末尾相加,并处理进位
    int i=1;
    while(i<=aLen){
		a[aLen-i]=(a[aLen-i]-'0')+(b[aLen-i]-'0')+'0';
		if(aLen-i-1>=0 && a[aLen-i]>'1'){
			a[aLen-i]-=2;
            a[aLen-i-1]++;
        }
        i++;
	}
    if(a[0]>'1') {
		a[0]-=2;
       	a.insert(a.begin(),'1');
    }
	return a;
}
int main(){
    string a,b;
    cin>>a>>b;
    string sum=addBinary(a,b);
    cout<<sum<<endl;
    return 0;
}

最后

以上就是健壮野狼为你收集整理的力扣67二进制求和C++的全部内容,希望文章能够帮你解决力扣67二进制求和C++所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部