力扣简67 二进制求和

依然很暴力 想不到别的办法 对于求字符串的和 把他们中短的那个用0补齐 然后对于00 01/10 11以及对应是否有进位的情况分别分析 

现在对于java输出都不会输出了 注意字符串和数组都是从左开始以0计值的 和现实生活中我们加法从右加不太符合 同上一题简66 

内存只超百分之五的人哈哈哈哈

 

 

 

package leetcode01;

public class Solution {
public static String addBinary(String a, String b) {
String res="";
int flag=0;
int la=a.length();
int lb=b.length();
if(lb>la) {
int temp=lb;
lb=la;
la=temp;

//这个求最值可以用math.max求

String tempstring=a;
a=b;
b=tempstring;
}
for(int i=lb;i<la;i++) {
String tempstring="0";
b=tempstring.concat(b);
}
// System.out.println("b="+b);
for(int i=la-1;i>=0;i--) {
if((a.charAt(i)+b.charAt(i)==96)&&(flag==0)) {
String tempstring="0";
res=tempstring.concat(res);
}
else if((a.charAt(i)+b.charAt(i)==96)&&(flag==1)) {
String tempstring="1";
flag=0;
res=tempstring.concat(res);
}
else if((a.charAt(i)+b.charAt(i)==97)&&(flag==0)) {
String tempstring="1";
res=tempstring.concat(res);
}
else if((a.charAt(i)+b.charAt(i)==97)&&(flag==1)) {
String tempstring="0";
flag=1;
res=tempstring.concat(res);
}
else if((a.charAt(i)+b.charAt(i)==98)&&(flag==0)) {
String tempstring="0";
flag=1;
res=tempstring.concat(res);
}
else if((a.charAt(i)+b.charAt(i)==98)&&(flag==1)) {
String tempstring="1";
flag=1;
res=tempstring.concat(res);
}
}
if(flag==1) {
String tempstring="1";
flag=0;
res=tempstring.concat(res);
}
// System.out.println(res);
return res;
}

// 给你两个二进制字符串,返回它们的和(用二进制表示)。
// 输入为 非空 字符串且只包含数字 1 和 0。

public static void main(String[] args) {
// TODO Auto-generated method stub
String s1="10";
String s2="10";
String res=addBinary(s1,s2);
System.out.print("res="+res);
}

}

 

 

 

 

 

 

看题解补充的知识:

 

https://blog.csdn.net/SUMMER_MM/article/details/53085705

 

 

 

 

 

posted @ 2022-05-11 16:56  Ssshiny  阅读(25)  评论(4)    收藏  举报