leetcode第一刷_Add Binary
来源:互联网 发布:samba 软件 编辑:程序博客网 时间:2024/06/04 19:02
二进制相加,本质上就是大整数加法,有关大整数加法我的舍友教过我一个很好的方法,先用一个int数组保存结果,将两个数对应位置相加,全部加完后,再统一处理进位的问题。这个方法同样适用于大整数的乘法。
这个题没什么特别的,注意一下进位别搞错了就行了,还有其实不用像我写的这么麻烦,可以一开始先判断哪个更长一些,交换一下。代码会简洁很多。
class Solution {public: string addBinary(string a, string b) { int l1 = a.length(), l2 = b.length(); string c(max(l1, l2)+1, '0'); int i1 = l1-1, i2 = l2-1, ch=0, k = max(l1, l2); while(i1>=0&&i2>=0){ if(a[i1] == '1' && b[i2] == '1'){ c[k--] = ch+'0'; ch = 1; }else if(a[i1]=='1'||b[i2]=='1'){ if(ch){ c[k--] = '0'; }else{ c[k--] = '1'; } }else{ c[k--] = '0'+ch; ch = 0; } i1--; i2--; } while(i1>=0){ if(ch){ if(a[i1] == '1'){ c[k--] = '0'; ch = 1; }else{ c[k--] = '1'; ch = 0; } }else{ c[k--] = a[i1]; } i1--; } while(i2>=0){ if(ch){ if(b[i2] == '1'){ c[k--] = '0'; ch = 1; }else{ c[k--] = '1'; ch = 0; } }else{ c[k--] = b[i2]; } i2--; } if(ch) c[0] = '1'; if(c[0] == '0') c = c.substr(1, c.length()-1); return c; }};
0 0
- leetcode第一刷_Add Binary
- leetcode第一刷_Add Two Numbers
- 【LeetCode】258_Add Digits
- leetcode(2)_Add Two Numbers
- LeetCode 2_Add Two Numbers
- LeetCode 2_Add Two Numbers
- 【LeetCode】2_Add Two Numbers
- leetcode第一刷_Balanced Binary Tree
- leetcode第一刷_Recover Binary Search Tree
- leetcode第一刷_Validate Binary Search Tree
- leetcode第一刷_Unique Binary Search Trees
- leetcode第一刷_Balanced Binary Tree
- Leetcode第二题_Add Two Numbers
- LeetCode之2_Add Two Numbers
- leetcode第一刷_ Flatten Binary Tree to Linked List
- leetcode第一刷_Minimum Depth of Binary Tree
- leetcode第一刷_Convert Sorted List to Binary Search Tree
- leetcode第一刷_Convert Sorted Array to Binary Search Tree
- 状态选择器
- JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解
- 九度 1057 众数
- iOS—向App Store提交应用
- android权限
- leetcode第一刷_Add Binary
- html中 input, disabled 和 readonly的最大区别
- Java回调函数的理解
- Sublime Text 3 python 配置
- Ubuntu WPS 安装总结
- Lua 中的面向对象编程之封装和继承
- jdk与jre的区别
- linux 创建连接命令 ln -s 软链接
- (fujie724) C#:简单实现动态数据生成Word文档并保存