LeetCode 0067
来源:互联网 发布:易语言反编译成源码 编辑:程序博客网 时间:2024/05/29 09:17
67. Add Binary
原题链接
我的思路:
直接两个字符串按尾对齐,然后模拟加法就好了。只要细心一点应该是没有问题的。
我的代码:
class Solution {public: string addBinary(string a, string b) { string res = ""; int la = a.size(); int lb = b.size(); // let la >= lb if(la < lb) { string t = a; a = b; b = t; } la = a.size(); lb = b.size(); int ia; int ib; int carry = 0; for(int i = lb - 1; i >= 0; i--) { ia = a[la - lb + i] - '0'; ib = b[i] - '0'; if(ia + ib + carry > 1) { res = (char)(ia + ib + carry - 2 + '0') + res; carry = 1; } else { res = (char)(ia + ib + carry + '0') + res; carry = 0; } } for(int i = la - lb - 1; i >= 0; i--) { ia = a[i] - '0'; if(ia + carry > 1) { res = (char)(ia + carry - 2 + '0') + res; carry = 1; } else { res = (char)(ia + carry + '0') + res; carry = 0; } } if(carry) { res = "1" + res; } return res; }};
最快解法的代码:
class Solution {public: string addBinary(string a, string b) { string s = ""; int c = 0, i = a.size() - 1, j = b.size() - 1; while(i >= 0 || j >= 0 || c == 1) { c += i >= 0 ? a[i --] - '0' : 0; c += j >= 0 ? b[j --] - '0' : 0; s = char(c % 2 + '0') + s; c /= 2; } return s; }};
首先思路是差不多的,其次,这份代码比我的要简洁一些,因为这份代码很好地将三种情况结合在了一起。在我的代码中,三种情况分别是第1个for循环,第2个for循环,以及最后一个if。但是运行速度好像差的有点多,我尝试着把输出语句去掉,然后就和最快解法一样快了。。。。。。所以说,输出很花费时间。
阅读全文
0 0
- LeetCode 0067
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- Pycrypto与RSA密码技术笔记
- SQL 复合语句解析
- python如何去除字符串中不想要的字符
- JavaBUG集--我埋过的坑
- Java基础:访问权限控制
- LeetCode 0067
- 高德地图开发(二)地图上显示指定位置
- LED_1_2(查表法流水灯)
- Reverse Integer(算法分析week5)
- Spring MVC框架下 从后台读取数据库并显示在前台页面【笔记自用】
- 11数值的整数次方python
- caffe学习笔记之特征提取(win10)
- 安装Office2007/2010时出现25004错误的解决办法
- Coursera 吴恩达 Deep Learning 第二课 改善神经网络 Improving Deep Neural Networks 第二周 编程作业代码Optimization methods