Given two binary strings, return their sum (also a binary string).
The input strings are both non-emptyandcontains only characters1or0.
Example 1:
Input: a = "11", b = "1"
Output: "100"
Example 2:
Input: a = "1010", b = "1011"
Output: "10101"
提交反馈:
294 / 294 test cases passed.
Status: Accepted
Runtime:26 ms
Submitted:0 minutes ago
You are here!
Your runtime beats 2.62 % of java submissions.
class Solution {
public String addBinary(String a, String b) {
// 将a赋值为叫=较长的字符串,b赋值为较短的字符串if(a.length() < b.length()){
String tmp = a;
a = b;
b = tmp;
}
// 将两个字符串对齐,长度补0变为一样长int cha = a.length()-b.length();
StringBuffer s0 = new StringBuffer();
int i = 0;
while(i < cha){
s0.append("0");
i += 1;
}
b = s0.toString() + b;
// 定义一个存储结果的StringBuffer
StringBuffer res = new StringBuffer();
// 将两个长度相等的字符串相加,定义一个进位标志flagint flag = 0;
int j = b.length() - 1;
while(j >= 0){
int a_curr = a.charAt(j)-48;
int b_curr = b.charAt(j)-48;
int sum = flag + a_curr + b_curr;
if(sum == 2){
res = res.append("0");
flag = 1;
}
elseif(sum == 3){
res = res.append("1");
flag = 1;
}
///////////////////////////////////////////////////////////////elseif(sum == 1){
res = res.append("1");
flag = 0;
}
else{
res = res.append("0");
flag = 0;
}
///////////////////////////////////////////////////////////////
j -= 1;
}
// 判断进位flag是否为0,否则前面补0if(flag == 1){
res = res.append("1");
}
return res.reverse().toString();
}
}
编程语言:JAVA题目描述:Given two binary strings, return their sum (also a binary string).The input strings are both non-empty and contains only characters 1 or 0.Example 1:Input: a = &amp;quot;11&amp;quot;, b = &amp;quot;1&amp;quot;...