一眼就看出来肯定要溢出!
一次通过!而且是最优的方法


除了麻烦一点,没有太大的问题
主要是一次就能通过这么长的代码,我真的很强!
简洁是其次,代码最重要是易懂!
public String addBinary(String a, String b) { //反着存,到最后反转即可 StringBuilder result = new StringBuilder(); //不对0,长度不一样,那么是要从各自右边算起,而不是取一个值 boolean flag = false; int i = a.length()-1; int j = b.length()-1; //先加长度相同的部分 while(i>=0&&j>=0){ if(a.charAt(i)=='1'){ if(b.charAt(j)=='0'){ if(flag){ result = result.append('0'); }else{ result = result.append('1'); } }else { if(flag){ result = result.append('1'); }else{ result = result.append('0'); flag=true; } } }else{ if(b.charAt(j)=='0'){ if(flag){ result =result.append('1'); flag=false; }else{ result = result.append('0'); } }else{ if(flag){ result =result.append('0'); }else{ result = result.append('1'); } } } j--; i--; } //出来之后,看看谁还没加完 if(i<0&&j<0){ //不用管了,都ok了 }else if (i>=0){ //进位好烦 while(i>=0){ if(a.charAt(i)=='1'){ if(flag){ result = result.append('0'); }else{ result = result.append('1'); } }else{ if(flag){ result = result.append('1'); flag=false; }else{ result = result.append('0'); } } i--; } }else{ while(j>=0){ if(b.charAt(j)=='1'){ if(flag){ result = result.append('0'); }else{ result = result.append('1'); } }else{ if(flag){ result = result.append('1'); flag=false; }else{ result = result.append('0'); } } j--; } } //最后还有一个进位 if(flag){ result = result.append(1); } return result.reverse().toString(); }
本文提供了一种简洁而高效的一次性通过且最优的二进制加法解决方案,避免了冗余步骤,强调代码易读性。详细解释了如何利用StringBuilder进行操作,确保正确处理进位,并最终反转结果字符串以获得正确答案。
192

被折叠的 条评论
为什么被折叠?



