Given two binary strings, return their sum (also a binary string).
For example,
a ="11"
b ="1"
Return"100".
题意:将两个以字符串形式保存的二进制数进行相加。
思路:其实不管是以数组、字符串形式,加或者乘(multiply strings),一般的思路都是从后往前计算,用一个中间变量保存相加或者相乘的结果(加法是一个变量int 或string就行,乘就要用到向量了)。本题而言,要注意的是,若是相加时其中长度较小的字符串变量完时,怎么办?这时,其实可以用中间变量在字符串各自存在的前提下加上对应值就行。还有一个就是:字符和数字之间的相互转换,可以通过加减‘0‘来实现。最后一个问题是:最高位存在进位的情况,其实可以最后根据中间变量的值来进行处理。代码如下:
1 class Solution { 2 public: 3 string addBinary(string a, string b) 4 { 5 string res=""; 6 int aLen=a.size()-1; 7 int bLen=b.size()-1; 8 int carry=0; 9 while(aLen>=0||bLen>=0) 10 { 11 if(aLen>=0) 12 carry+=a[aLen--]-‘0‘; 13 if(bLen>=0) 14 carry+=b[bLen--]-‘0‘; 15 16 res=char(carry%2+‘0‘)+res; //必须存在char不然,就会报错。恩,不懂。也可以是to_string(carry%2)+res; 17 carry/=2; 18 } 19 if(carry==1) 20 { 21 res=‘1‘+res; 22 } 23 24 return res; 25 } 26 };
时间: 2024-10-12 15:15:33