LeetCode 67 — Add Binary(C++ Java Python)
2014-02-26 21:18
483 查看
题目:http://oj.leetcode.com/problems/add-binary/
Given two binary strings, return their sum (also a binary string).
For example,
a =
b =
Return
题目翻译:
给定两个二进制字符串,返回它们的和(也是一个二进制字符串)。
例如,
a = "11"
b = "1"
返回"100"。
分析:
注意细节。
C++实现:
Java实现:
Python实现:
感谢阅读,欢迎评论!
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 == '0') { sum[i] = carry; carry = '0'; } else if(str1[m] == '1' && str2 == '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 == '0') { sum[i] = carry; carry = '0'; } else if (str1[m] == '1' && str2 == '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 == '0': sum[i] = carry carry = '0' elif str1[m] == '1' and str2 == '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)
感谢阅读,欢迎评论!
相关文章推荐
- LeetCode 63 — Unique Paths II(C++ Java Python)
- LeetCode 141 — Linked List Cycle(C++ Java Python)
- Java [Leetcode 67]Add Binary
- [LeetCode] 009. Palindrome Number (Easy) (C++/Java/Python)
- [LeetCode] 010. Regular Expression Matching (Hard) (C++/Java/Python)
- LeetCode 144 — Binary Tree Preorder Traversal(C++ Java Python)
- [LeetCode] 020. Valid Parentheses (Easy) (C++/Java/Python)
- LeetCode 19 — Remove Nth Node From End of List(C++ Java Python)
- LeetCode 61 — Rotate List(C++ Java Python)
- LeetCode 14 — Longest Common Prefix(C++ Java Python)
- LeetCode 50 — Pow(x, n)(C++ Java Python)
- LeetCode 7 — Reverse Integer(C++ Java Python)
- LeetCode 73 — Set Matrix Zeroes(C++ Java Python)
- LeetCode 27 — Remove Element(C++ Java Python)
- [LeetCode By Python]67. Add Binary
- LeetCode 149 — Max Points on a Line(C++ Java Python)
- LeetCode 3 — Longest Substring Without Repeating Characters (C++ Java Python)
- 【leetcode】67. Add Binary【java】
- LeetCode 8 — String to Integer (atoi)(C++ Java Python)
- LeetCode 26 — Remove Duplicates from Sorted Array(C++ Java Python)