赞
踩
题目地址:67. 二进制求和
给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。
C++
class Solution { public: string addBinary(string a, string b) { //输入:a = "1010", b = "1011" //输出:"10101" int al=a.size(); int bl=b.size(); //让两个字符串等长,若不等长,在短的字符串前补零,否则之后的操作会超出索引 while(al>bl){ b='0'+b; ++bl; } while(al<bl){ a='0'+a; ++al; } //进位 int carry=0; //从后到前遍历所有的位数,同位相加 for(int i=al-1;i>=0;i--){ int sum=a[i]-'0'+b[i]-'0'+carry; //本位数值 a[i]=(sum)%2+'0'; //更新进位 carry=sum/2; } //有溢出(第0位数的相加是单独处理的,是否需要在最前面加一位数‘1’) if(carry>0) a='1'+a; return a; } };
在这里插入代码片
在这里插入代码片
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。