概述
二进制求和
难度:简单
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
说转换成整数后加再转换成二进制的可以去XXOO了,你开心就好
执行用时 : 4 ms, 在Add Binary的Java提交中击败了89.27% 的用户
内存消耗 : 36.9 MB, 在Add Binary的Java提交中击败了46.92% 的用户
执行用时 : 5 ms, 在Add Binary的Java提交中击败了73.63% 的用户
内存消耗 : 34.5 MB, 在Add Binary的Java提交中击败了91.21% 的用户
下面放出代码
public static String addBinary(String a,String b)
{
//利用了StringBuilder的一个重要方法append():将typedata字符串表示形式追加到序列,但在最后返回时应逆序返回
if(a.length()==0) return b;
else if(b.length()==0) return a;
else if(a.length()==0&&b.length()==0) return "";
char[] ch1 = a.toCharArray();
char[] ch2 = b.toCharArray();
if(ch1.length<ch2.length){
char[] ch;ch=ch1;ch1=ch2;ch2=ch;//可以设ch1一直为元素长度最长的数组,避免后面的查找最长等等麻烦
}
int len1 = ch1.length,len2 = ch2.length;//len1是它的长度
StringBuilder stringBuilder = new StringBuilder();
int t=0;
int i,j;
for( i =len1-1,j=len2-1 ; j>-1; i--,j--)
{
int num = ch1[i]-'0'+ch2[j]-'0'+t;//t为进位
if(num>1)
{t=1;num-=2;}
else t=0;
stringBuilder.append(num);
}
if(i!=-1){
for(;i>-1;i--){
int num = ch1[i]-'0'+t;
if(num>1) {
t=1;num-=2;
}
else t=0;
stringBuilder.append(num);
}
}
if(t==1) stringBuilder.append(t);
return stringBuilder.reverse().toString();
}
最后
以上就是干净蜜蜂为你收集整理的LeetCode:二进制求和的全部内容,希望文章能够帮你解决LeetCode:二进制求和所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复