LeetCode 67 — Add Binary(C++ Java Python)
来源:互联网 发布:虎头软件是什么 编辑:程序博客网 时间:2024/05/29 17:42
题目:http://oj.leetcode.com/problems/add-binary/
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
题目翻译:
给定两个二进制字符串,返回它们的和(也是一个二进制字符串)。
例如,
a = "11"
b = "1"
返回"100"。
分析:
注意细节。
C++实现:
class Solution {public: string addBinary(string a, string b) { string str1; string str2; if(a.length() >= b.length()) { str1 = a; str2 = b; } else { str1 = b; str2 = a; } int m = str1.length(); int n = str2.length(); char sum[m + 1]; sum[m] = '\0'; int i = m - 1; char carry = '0'; --m; --n; while(n >= 0) { if(str1[m] == '0' && str2[n] == '0') { sum[i] = carry; carry = '0'; } else if(str1[m] == '1' && str2[n] == '1') { sum[i] = carry; carry = '1'; } else { if(carry == '0') { sum[i] = '1'; } else { sum[i] = '0'; } } --m; --n; --i; } while(m >= 0) { if(str1[m] == '1') { if(carry == '0') { sum[i] = '1'; } else { sum[i] = '0'; } } else { sum[i] = carry; carry = '0'; } --m; --i; } string result = sum; if(carry == '1') { return "1" + result; } return result; }};
Java实现:
public class Solution { public String addBinary(String a, String b) {char[] str1;char[] str2;if (a.length() >= b.length()) {str1 = a.toCharArray();str2 = b.toCharArray();} else {str1 = b.toCharArray();str2 = a.toCharArray();}int m = str1.length;int n = str2.length;char[] sum = new char[m];int i = m - 1;char carry = '0';--m;--n;while (n >= 0) {if (str1[m] == '0' && str2[n] == '0') {sum[i] = carry;carry = '0';} else if (str1[m] == '1' && str2[n] == '1') {sum[i] = carry;carry = '1';} else {if (carry == '1') {sum[i] = '0';} else {sum[i] = '1';}}--m;--n;--i;}while (m >= 0) {if (str1[m] == '1') {if (carry == '1') {sum[i] = '0';} else {sum[i] = '1';}} else {sum[i] = carry;carry = '0';}--m;--i;}String result = new String(sum);if (carry == '1') {return "1" + result;} return result; }}
Python实现:
class Solution: # @param a, a string # @param b, a string # @return a string def addBinary(self, a, b): if(len(a) >= len(b)): str1 = a str2 = b else: str1 = b str2 = a m = len(str1) n = len(str2) sum = ['0' for i in range(m)] i = m - 1 carry = '0' m -= 1 n -= 1 while n >= 0: if str1[m] == '0' and str2[n] == '0': sum[i] = carry carry = '0' elif str1[m] == '1' and str2[n] == '1': sum[i] = carry carry = '1' else: if carry == '0': sum[i] = '1' else: sum[i] = '0' # not needed m -= 1 n -= 1 i -= 1 while m >= 0: if str1[m] == '0': sum[i] = carry carry = '0' else: if carry == '0': sum[i] = '1' else: sum[i] = '0' # not needed m -= 1 i -= 1 if carry == '1': return "1" + "".join(sum) return "".join(sum)
感谢阅读,欢迎评论!
0 0
- LeetCode 67 — Add Binary(C++ Java Python)
- 【leetcode】67. Add Binary(Python & C++)
- LeetCode 67:Add Binary (c++)
- 【leetcode c++】67 Add Binary
- [leetcode-67]Add Binary(C)
- LeetCode 67 : Add Binary (Java)
- 【Leetcode】【python】Add Binary
- leetCode-Add Binary(c++)
- Python学习——leetcode(Add Binary)
- LeetCode(67) Add Binary
- [Leetcode] Add Binary (Java)
- Add Binary @ LeetCode java
- [LeetCode][Java] Add Binary
- leetcode:Add Binary 【Java】
- 【leetcode】Add Binary-----Java
- LeetCode 之 Add Binary — C 实现
- Add Binary | leetcode 67 【Java解题报告】
- Leetcode:67. Add Binary(JAVA)
- java类的访问权限
- 解决 android 4.2 连接 leap wifi 网络
- 记一次ubuntu误操作导致无法用sudo
- cocos2d-x所有动画
- PAT basic 1010 : 一元多项式求导
- LeetCode 67 — Add Binary(C++ Java Python)
- 在centos上配置samba服务器
- stl(五)------生成 A-Z, AA - ZZ , AAA, -- ZZZ AAAA -- AAAZ 等序列的字符
- mysql备忘
- hadoop 2.2.0配置遇到的问题总结
- poj 2481 Cows(树状数组)题目有陷阱,转换后与stars类似
- android从init到开机动画启动关闭流程一简易图(surfaceflinger启动的位置)
- 怎样将整数转化成字符串数,并且不用函数itoa
- Activity的生命周期