概述
最近几天在领扣(https://leetcode-cn.com)刷题...以此记录
水平不够,从简单的做起。
67. 二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1
和 0
。
class Solution {
public String addBinary(String a, String b) {
char[] aArray = a.toCharArray();
char[] bArray = b.toCharArray();
if(aArray.length>=bArray.length){
return addBinary(aArray,bArray);
}
return addBinary(bArray,aArray);
}
/** 长数组+短数组*/
public String addBinary(char[] aArray,char[] bArray){
//初始化进位标志
int target = 0;
//a数组的起始位
int initIndex = aArray.length-bArray.length;
for(int i = bArray.length-1;i>=0;i--){
//两数组、进位标志相加得到的字符
int temp = (int)aArray[initIndex+i]+(int)bArray[i]+ target - (int)'0';
if(temp>'1'){
//有进位
aArray[initIndex+i] = (char)(temp - 2);
target = 1;
}else {
//无进位
aArray[initIndex+i] = (char)temp;
target = 0;
}
}
//b数组遍历完成
//无进位
if(target == 0){
return String.valueOf(aArray);
}
//进位
//遍历a数组剩余部分
for(int i = initIndex - 1;i>=0;i--){
//进位后不需再进位
if(aArray[i]=='0'){
//改为1
aArray[i]++;
return String.valueOf(aArray);
}
//改为0
aArray[i]--;
}
//遍历a完成仍有进位
return "1"+String.valueOf(aArray);
}
}
最后
以上就是顺利灰狼为你收集整理的给定两个二进制字符串,返回他们的和(用二进制表示)的全部内容,希望文章能够帮你解决给定两个二进制字符串,返回他们的和(用二进制表示)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复