题目描述:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
本题给我们两个字符串形式的二进制数,让我们计算相加之后的结果。
解题思路:
这道题我的思路是从字符串的末尾开始遍历,计算它们相加后得到的数并根据情况赋值给其中一个字符串。但这种方法肯定会遇到两个字符串长度不一的情况。我的解决方法就是把短的字符串前面加0,让他们长度相同。
代码:
1 class Solution { 2 public: 3 string addBinary(string a, string b) { 4 int d=a.length()-b.length(); 5 if(d>0) 6 //比较两个字符串长度 7 b.insert(0,d,'0'); 8 else if(d<0) 9 a.insert(0,-d,'0'); 10 int carryFlag=0;//进位标志 11 for(int i=a.length()-1;i>=0;i--){ 12 int sum=a[i]-48+b[i]-48+carryFlag;//根据ASCII码进行的处理 13 if(sum>=2){ 14 //进位 15 carryFlag=1; 16 a[i]=sum+46; 17 if(i==0)//最高位出现进位的情况 18 a.insert(0,"1"); 19 } 20 else{ 21 a[i]=sum+48; 22 carryFlag=0; 23 } 24 } 25 return a; 26 } 27 };