题目描述:

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 };

 

posted on 2018-02-04 19:57  宵夜在哪  阅读(75)  评论(0编辑  收藏  举报