通过
给定两个二进制字符串,返回他们的和(用二进制表示)。
您在真实的面试中是否遇到过这个题?
Yes
哪家公司问你的这个题?
Airbnb Alibaba Amazon Apple Baidu Bloomberg Cisco Dropbox Ebay Facebook Google Hulu Intel Linkedin Microsoft NetEase Nvidia Oracle Pinterest Snapchat Tencent Twitter Uber Xiaomi Yahoo Yelp Zenefits
感谢您的反馈
样例
标签
Expand
a = 11
b = 1
返回 100
相关题目 Expand
- public class Solution {
/**
* @param a a number
* @param b a number
* @return the result
*/
public String addBinary(String a, String b) {
// Write your code here
int llength = a.length() >= b.length() ? a.length() : b.length();
char carry = '0';
int slength = a.length() < b.length() ? a.length() : b.length();
char sstr[] = new char[llength];
char lstr[] = new char[llength];
char restr[] = new char[llength + 1];
String resString = "";
if(b.length() == a.length()){
int y = 0,p = 0;
for (int j = llength-1; j >=0; j--) {
lstr[y++] = a.charAt(j);
sstr[p++] = b.charAt(j);
}
}
if (b.length() < a.length()) {
int k = 0, m = 0;
for (int i = slength-1; i >=0; i--) {
sstr[k++] = b.charAt(i);
}
for (int i = slength; i < llength; i++) {
sstr[k++] = '0';
}
for (int j = llength-1; j >=0; j--) {
lstr[m++] = a.charAt(j);
}
}
if (a.length() < b.length()) {
int k = 0, m = 0;
for (int i = slength-1; i >=0; i--) {
sstr[k++] = a.charAt(i);
}
for (int i = slength; i < llength; i++) {
sstr[k++] = '0';
}
for (int j = llength-1; j >=0; j--) {
lstr[m++] = b.charAt(j);
}
}
int count = 0;
for (int i = 0; i <=llength-1; i++) {
restr[i] = (char) ((sstr[i] + lstr[i] + carry - 96-48) % 2 + 48);
carry = (char) ((sstr[i] + lstr[i] + carry - 96-48) / 2 + 48);
}
if (carry == '1') {
resString += carry;
for (int i = llength-1; i >=0; i--) {
resString += restr[i];
}
}
if (carry == '0') {
for (int i = llength-1; i >=0; i--) {
resString += restr[i];
}
}
return resString;
}
}