LeetCode 67:Add Binary (c++)
来源:互联网 发布:学python书籍推荐 编辑:程序博客网 时间:2024/06/03 15:20
一:题目
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
二:解题分析
将只有'0,'1'的两个字符串进行二进制相加,即c代表a+b的结果
abc0000111011101.把两个字符串从右向左遍历,进行加和,直到至少有一个字符串遍历完成为止。注意有进位。
该步骤以长度较短的字符串为基准,从他的高位开始计算,同时要考虑进位carry=0,无进位,carry=1,有进位
a[i]b[i]ccarry00000110101011012.此时应检查是否还有另一个字符串没有被遍历完。若发现存在则继续遍历。
3.遍历完两个字符串后,还需检查进位是否为 0,若进位不为 0,还要加上进位。即字符串c(求和后的字符串)长度等于最大的字符串长度或者最大字符串长度+1
4.最后将得到的和字符串反转,即为最后的结果(因为求和是从高位开始,a,b高位求和的结果,保存在c 的低位)
三:代码实现
class Solution {public: string sum(string a,string b) { string c; int minLen=b.length(); int diff=a.length()-b.length(); char carry='0'; int numOfOne; int i; //从字符串的高位,一次相加 for(i=minLen-1;i>=0;i--){ numOfOne=0; //统计a[i],b[i],carry中1的个数 if(a[i+diff]=='1') numOfOne++; if(b[i]=='1') numOfOne++; if(carry=='1') numOfOne++; if(numOfOne==0){ c+='0'; carry='0'; } if(numOfOne==1){ c+='1'; carry='0'; } if(numOfOne==2){ c+='0'; carry='1'; } if(numOfOne==3){ c+='1'; carry='1'; } }//for //计算字符串a剩余位的结果 for(i=diff-1;i>=0;i--){ if(a[i]=='0' && carry=='0'){ c+='0';carry='0'; } if(a[i]=='0' && carry=='1'){ c+='1';carry='0'; } if(a[i]=='1' && carry=='0'){ c+='1';carry='0'; } if(a[i]=='1' && carry=='1'){ c+='0';carry='1'; } } if(carry=='1') c+='1'; return c; } string addBinary(string a, string b) { string c,d; int i; bool flag=true; //字符串a更长 if(a.length()<b.length()){ flag=false; } //字符串a的长度大于b的长度 if(flag) c=sum(a,b); else c=sum(b,a); //反转字符串c for(i=c.length()-1;i>=0;i--) d+=c[i]; return d; }};
阅读全文
0 0
- LeetCode 67:Add Binary (c++)
- 【leetcode c++】67 Add Binary
- [leetcode-67]Add Binary(C)
- leetCode-Add Binary(c++)
- LeetCode(67) Add Binary
- 【leetcode】67. Add Binary(Python & C++)
- [leetcode 67] Add Binary
- [LeetCode 67]Add Binary
- leetcode-67 Add Binary
- leetcode || 67、Add Binary
- LeetCode 67 Add Binary
- Add Binary - LeetCode 67
- LeetCode---(67) Add Binary
- leetcode[67]:Add Binary
- leetcode 67 Add Binary
- Leetcode# 67 Add Binary
- leetcode 67: Add Binary
- leetcode-67-Add Binary
- Git
- JSONP 跨域
- 设计模式之策略模式
- linux下安装OpenCV-2.4
- 根元素找不到 Jquery中$.get()和$.post()
- LeetCode 67:Add Binary (c++)
- 新浪微博分享demo
- 2017上半年一些Android库(记录)
- eCos线程同步
- Linux 学习之du 命令
- React-navigation之总结_repint
- UpdatePanel用法详解
- EasyUI table中点击按钮获取当前行数据
- thinkphp云书签