博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode 28] 67 Add Binary
阅读量:4963 次
发布时间:2019-06-12

本文共 2302 字,大约阅读时间需要 7 分钟。

Problem:

Given two binary strings, return their sum (also a binary string).

For example,

a = "11"
b = "1"
Return "100".

 

Analysis:

Three main steps: 1. add a and b until meet one's end; 2. process the remaining part of the the other string; 3. process the carry bit.

Simulation problem, the time complexity is O(n+m), the space complexity is O(n+m)

 

Code:

1 class Solution { 2 public: 3     string addBinary(string a, string b) { 4         // Start typing your C/C++ solution below 5         // DO NOT write int main() function 6         int la = a.length()-1, lb = b.length()-1; 7         int bitSum, carry = 0, idx=0; 8         char *res = new char[100](); 9         10         while (la>=0 && lb>=0) {11             bitSum = a[la] + b[lb] + carry - '0' - '0';12             if (bitSum == 2) {
//there is a carry13 res[idx++] = '0';14 carry = 1;15 } else if (bitSum == 3) {16 res[idx++] = '1';17 carry = 1;18 } else {19 res[idx++] = bitSum + '0';20 carry = 0;21 }22 23 la--;24 lb--;25 }26 27 while (la>=0) {28 bitSum = a[la] + carry - '0';29 if (bitSum == 2) {
//there is a carry30 res[idx++] = '0';31 carry = 1;32 } else {33 res[idx++] = bitSum + '0';34 carry = 0;35 }36 37 la--;38 }39 40 while (lb>=0) {41 bitSum = b[lb] + carry - '0';42 if (bitSum == 2) {
//there is a carry43 res[idx++] = '0';44 carry = 1;45 } else {46 res[idx++] = bitSum + '0';47 carry = 0;48 }49 50 lb--;51 }52 53 if (carry > 0) res[idx++] = carry + '0';54 res[idx] = '\0';55 56 for (int i=0, j=idx-1; i <=j; i++, j--) {57 char ch = res[i];58 res[i] = res[j];59 res[j] = ch;60 }61 62 string sres = res;63 return sres;64 }65 };
View Code

 

 

Attention:

转载于:https://www.cnblogs.com/freeneng/archive/2013/05/20/3087960.html

你可能感兴趣的文章
处理器管理与进程调度
查看>>
页面懒加载
查看>>
向量非零元素个数_向量范数详解+代码实现
查看>>
java zip 中文文件名乱码_java使用zip压缩中文文件名乱码的解决办法
查看>>
java if 用法详解_Java编程中的条件判断之if语句的用法详解
查看>>
kafka的java客户端_KAFKA Producer java客户端示例
查看>>
java -f_java学习笔记(一)
查看>>
java 什么题目好做_用java做这些题目
查看>>
java中的合同打印_比较方法违反了Java 7中的一般合同
查看>>
php 位运算与权限,怎么在PHP中使用位运算对网站的权限进行管理
查看>>
php include效率,php include类文件超时
查看>>
matlab sin函数 fft,matlab的fft函数的使用教程
查看>>
wcdma下行如何解扩解扰 matlab,WCDMA技术基础.ppt
查看>>
MySQL date_format() 函数
查看>>
mysql 时间处理
查看>>
mysql adddate()函数
查看>>
mysql addtime() 函数
查看>>
mysql 根据日期时间查询数据
查看>>
mysql 创建时间字段
查看>>
mysql 生成随机数rand()
查看>>