[LeetCode]67 二进制相加
来源:互联网 发布:软件测试 回归策略 编辑:程序博客网 时间:2024/06/02 16:15
Add Binary(二进制相加)
【难度:Easy】
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
给定两个二进制数的字符串,以字符串形式返回他们的和。
如:
a = “11”
b = “1”
return “100”
解题思路
高精度加法的变型题,采用的方法是从字符串末尾开始相加,由于二进制加法的情况较少,因此可以针对不同的情况来采取措施。
c++代码如下:
class Solution {public: string addBinary(string a, string b) { if (a == "") return b; if (b == "") return a; int j = b.length()-1; int i = a.length()-1; char carry = '0'; string ans = ""; for (; i >= 0 && j >= 0; i--,j--) { if (a[i] == '1' && b[j] == '1') { ans = carry + ans; carry = '1'; } else if (a[i] == '0' && b[j] == '0'){ ans = carry + ans; carry = '0'; } else { if (carry == '1') { ans = '0' + ans; carry = '1'; } else { ans = '1' + ans; carry = '0'; } } } if (i >= 0) { for (i; i >= 0; i--) { if (carry == '1' && a[i] == '1') { ans = '0' + ans; carry = '1'; } else if (carry == '0') { ans = a[i] + ans; } else { ans = carry + ans; carry = '0'; } } } else if (j >= 0) { for (j; j >= 0; j--) { if (carry == '1' && b[j] == '1') { ans = '0' + ans; carry = '1'; } else if (carry == '0') { ans = b[j] + ans; } else { ans = carry + ans; carry = '0'; } } } if (carry == '1') ans = '1' + ans; return ans; }};
0 0
- [LeetCode]67 二进制相加
- LeetCode-67 Add Binary(二进制数相加)
- LeetCode-67-Add Binary(二进制相加)
- Add Binary 二进制相加 @LeetCode
- Leetcode:Add Binary 二进制相加
- leetcode 之 二进制数相加
- LeetCode之二进制字符串相加
- LeetCode 67 Add Binary(二进制相加)(*)
- LeetCode | Add Binary(二进制相加)
- leetCode 之 两个二进制数相加
- leetcode 67. Add Binary 二进制相加
- 二进制相加
- 二进制相加
- [LeetCode]—Add Binary 两个字符串二进制相加
- Leetcode练习<十五>二进制数相加
- hoj10475(二进制大数相加)
- Add Binary 二进制相加
- 大数相加(二进制)
- 最长公共子字符串
- Swift基本数据类型
- HashIds
- 获得用户的地理信息
- 【BZOJ1001】[BeiJing2006]狼抓兔子【最小割】【最短路】【对偶图】
- [LeetCode]67 二进制相加
- #if defined和#if !defined(c语言的宏定义)
- Java开发中的23种设计模式详解
- 继上篇,俄罗斯方块代码
- IOS在线视频播放
- UML系列图--用例图
- Binder通信流程图
- 实体类的枚举属性--原来支持枚举类型这么简单,没有EF5.0也可以
- POJ-3261 Milk Patterns (后缀数组 最长k次重复子串)