67.LeetCode Add Binary(easy)[字符串 大数相加处理]
2016-04-14 17:04
465 查看
Given two binary strings, return their sum (also a binary string).
For example,
a =
b =
Return
这个题是要实现对字符串完成二进制加法的功能,类似于大数加法这样的功能,需要考虑的是进位位、两个串不是一样长的时候需要补0的操作。这个题需要实现1+1 进位这样的规则设定。(要点:补0,进位处理)
具体思路如下:首先获取两个字符串的长度,对较短的字符串的前面添加‘0’字符,然后从数组的末尾开始相加,每次相加时注意修改进位标志,最后返回结果字符串。
For example,
a =
"11"
b =
"1"
Return
"100".
这个题是要实现对字符串完成二进制加法的功能,类似于大数加法这样的功能,需要考虑的是进位位、两个串不是一样长的时候需要补0的操作。这个题需要实现1+1 进位这样的规则设定。(要点:补0,进位处理)
具体思路如下:首先获取两个字符串的长度,对较短的字符串的前面添加‘0’字符,然后从数组的末尾开始相加,每次相加时注意修改进位标志,最后返回结果字符串。
class Solution { public: string addBinary(string a, string b) { int len1 = a.length(); int len2 = b.length(); if(len1>len2) { int t = len1-len2; while(t--) { b = "0"+b; } }else if(len1<len2) { int t = len2-len1; while(t--) { a = "0"+a; } } string c; char flag = '0'; //cout<<a<<" "<<b<<endl; for(int i=a.length()-1;i>=0;i--) { if(a[i]=='1'&&b[i]=='1') { c = flag + c; flag = '1'; }else if((a[i]=='1'&&b[i]=='0')||(a[i]=='0'&&b[i]=='1')) { if(flag == '0') { c = '1'+c; }else{ c = '0'+c; } }else { c = flag + c; flag = '0'; } } //cout<<flag<<endl; if(flag == '1') c = flag + c; return c; } };
相关文章推荐
- pre浏览器不折行问题解决
- sun.net.ftp.FtpClient 删除文件夹删除文件
- Git客户端图文详解如何安装配置GitHub操作流程攻略
- ajax技术
- [MySQL]快速解决"is marked as crashed and should be repaired"故障
- 笔试题24. LeetCode OJ (11)
- 15-电气-2012 VB语言中计算一位数乘一位数
- TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute
- make_pair (STL Samples)
- VB
- react的生命周期
- ScrollView嵌套ListView
- MVC4下拉少数名族
- Sass编译时Invalid US-ASCII character解决办法
- 前端隐藏出边界内容的实现方法
- 1到100 的和
- poj 3252组合数学
- 下拉列表问题
- Matlab中plot函数全功能解析
- 用正则 把手机号 中间 4个数字变成** 号