Add Binary
来源:互联网 发布:如何注销淘宝账号 编辑:程序博客网 时间:2024/06/08 08:41
题目:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
思路:
这道题目,主要思想就是从两个字符串尾部,逐位相加,并设置标志位,对一些特殊条件一定要注意,本身算法并不难,主要是if-else逻辑判断比较多
代码:
class Solution {public: string addBinary(string a, string b) { int temp,len_a,len_b; len_a = a.size(); len_b = b.size(); string::iterator itr_a = a.end() - 1; string::iterator itr_b = b.end() - 1; string str_a =a; string str_b =b; if(len_a<len_b) { a =str_b; b =str_a; itr_a = a.end() - 1; itr_b = b.end() - 1; } int c =0; while(itr_b!=b.begin()-1) { if(c == 0) { if(*itr_a ==*itr_b&&*itr_a == '1') { c=1; *itr_a = '0'; itr_a --; itr_b --; } else if(*itr_a == *itr_b&&*itr_a =='0') { itr_a --; itr_b --; c = 0; } else { *itr_a = '1'; c = 0; itr_a --; itr_b --; } } else { if(*itr_a==*itr_b&&*itr_a=='0') { *itr_a ='1'; c = 0; itr_a --; itr_b --; } else if(*itr_a !=*itr_b) { c =1; *itr_a = '0'; itr_a --; itr_b --; } else { c =1; *itr_a ='1'; itr_a --; itr_b --; } } } if(c==1) { while(itr_a!=a.begin()-1) { cout<<a<<endl; if(c==1) { if(*itr_a=='0') { c =0; *itr_a = '1'; itr_a --; return a; } else if(*itr_a =='1') { c =1; *itr_a = '0'; itr_a --; } } } if(c==1) { a.insert(0,"1"); return a; } } return a; }};
阅读全文
0 0
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- 实现图片轮播
- 算法概论 8.3题
- 高精度加法
- os.listdir()
- android studio 中要在app名称中添加&特殊符号
- Add Binary
- 深浅拷贝
- ios 拨打电话
- Activity深度剖析
- Problem 4 Largest palindrome product
- 计划任务里执行包含连接oracle命令的shell脚本报错:SP2-0667: Message file sp1<lang>.msb not found
- window下彻底卸载删除SQL Serever 2012
- (57)String类操作:获取、判断、转换
- 反序输出