博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode add_binary 采坑记
阅读量:4595 次
发布时间:2019-06-09

本文共 2487 字,大约阅读时间需要 8 分钟。

尽管add_binary在leetcode中是一个简单难度,但是踩了不少坑,记录一下

描述:

给两个字符串形式的二进制数,要求求和并输出字符串形式的结果,其中a和b均不为空字符串

样例:

a=“1010”,b="1011",输出“10101”.

 

过程:

刚看到题目的时候觉得很简单,只要每一位按位相加就好了,很容易写出第一版代码

public class AddBinary {    public String add_binary(String a,String b){        char[] chars_a = a.toCharArray();        char[] chars_b = b.toCharArray();                int c_out = 0;        // 统计最长位数,将chars_a设置为最长的        int max_length = chars_a.length;        if(chars_a.length
1){ c_out = 1; result[i]=(char)(t-2); }else { c_out=0; result[i]=(char)t; } } StringBuilder stringBuilder = new StringBuilder(); if(c_out!=0){ stringBuilder.append(1); } stringBuilder.append(result); return stringBuilder.toString(); }}

  开心的测试了一下,结果输出的是什么东西,还有空白符,这就是不严谨的问题了,在设置result[i]的时候没有考虑到再加上‘0’的ASCII码值,导致输出的是0或者1对应的ASCII值结果,实验第二版代码

public class AddBinary {    public String add_binary(String a,String b){        char[] chars_a = a.toCharArray();        char[] chars_b = b.toCharArray();        int c_out = 0;        // 统计最长位数,将chars_a设置为最长的        int max_length = chars_a.length;        if(chars_a.length
1){ c_out = 1; result[i]=(char)(t-2+'0'); }else { c_out=0; result[i]=(char)(t+'0'); } } StringBuilder stringBuilder = new StringBuilder(); if(c_out!=0){ stringBuilder.append(1); } stringBuilder.append(result); return stringBuilder.toString(); }}

  结果显示都是数字了没问题,但是计算的结果为什么出错了,原因在于String.toCharArray(),是按照从左向右的顺序读入的,即第零位是二进制数的最高为,相当于反了过来,所以第三版代码出现了

public class AddBinary {    public String add_binary(String a,String b){        char[] chars_a = a.toCharArray();        char[] chars_b = b.toCharArray();        int c_out = 0;        // 统计最长位数,将chars_a设置为最长的        int max_length = chars_a.length;        if(chars_a.length
1){ c_out = 1; result[max_length-i-1]=(char)(t-2+'0'); }else { c_out=0; result[max_length-i-1]=(char)(t+'0'); } } StringBuilder stringBuilder = new StringBuilder(); if(c_out!=0){ stringBuilder.append(1); } stringBuilder.append(result); return stringBuilder.toString(); }}

  总算是ac了,感觉很是坑啊

 

转载于:https://www.cnblogs.com/leaveMeAlone/p/9903215.html

你可能感兴趣的文章
gui编程实践(3)--记事本界面 JMenuBar JMenu
查看>>
黑马程序员--抽象类与接口
查看>>
IaaS,PaaS,SaaS 的区别
查看>>
Python复习基础篇
查看>>
关于Cocos2d-x中背景音乐和音效的添加
查看>>
.Net持续集成 —— Jenkins+Git+WebDeploy
查看>>
01_Numpy基本使用
查看>>
checkbox和文字对齐
查看>>
JConsole远程连接配置 服务器监控工具
查看>>
了解HTTP协议栈(实践篇)
查看>>
loj10035. 「一本通 2.1 练习 1」Power Strings
查看>>
%s的用法
查看>>
调用底层不能直接访问的类和方法
查看>>
清理缓存的方法 #DF
查看>>
JAVA array,map 转 json 字符串
查看>>
2017-12-27练习
查看>>
NET设计规范(二) 命名规范
查看>>
VMware 9.0.1安装Mac OS X Mountain Lion 10.8.2
查看>>
SSL延迟
查看>>
android新手关于左右滑动的问题,布局把<android.support.v4.view.ViewPager/><ImageView/> 放在上面就不行了。...
查看>>