顺便把之前做过的一个简单难度的题也贴上来吧

67. Add Binary

Given two binary strings, return their sum (also a binary string).

For example,
a = "11"
b = "1"
Return "100".

这种问题 其实大多数人都做烂了 但是在实际应用中这个问题应用很广泛 有用二进制数基本就要处理加减乘除

一种最容易理解的方法但是不高效 那就是转为十进制处理后再转为二进制 当然这就不是我们玩leetcode的目的了

这里给出一种做这种问题的普遍解法 先低位相加 定义一个carry表示进位 再处理多出来的部分

话不多说 直接敲代码

还是基本功有问题 没有找到valueof  o应该大写

改正 编译通过了 看能不能ACCEPT

wrong answer  普天同庆

看看代码逻辑哪里出问题了 看答案好像是最后的carry没有加上去  日常看不出来为啥没起作用 。。。。

打开eclipse 调试看看。。

运行结果果然是0 设断点

我服了我自己。。。  sum是Int 忘记处理字符和强制转换了 果然要细心再细心。。。

阔以  再leetcode试试

粗心被雷劈 有一段忘记加carry了

成功解决- -

表现很中庸  6ms  只是解决了问题而已 很显然这不是我的目的

日常看别人的优秀解决方案  2ms

public String addBinary(String a, String b) {
char[] aArray = a.toCharArray();
char[] bArray = b.toCharArray();
char[] sumArray = new char[Math.max(a.length(), b.length()) + 1];
int index = sumArray.length - 1, carry = 0;
for(int aIndex = a.length()-1, bIndex = b.length()-1; aIndex >=0 || bIndex >= 0; aIndex--, bIndex--){
int aNum = aIndex < 0 ? 0 : aArray[aIndex] - '0';
int bNum = bIndex < 0 ? 0 : bArray[bIndex] - '0';
int sum = aNum + bNum + carry;
sumArray[index--] = (char)('0' + (sum % 2));
carry = sum / 2;
}
sumArray[0] = (char)('0' + carry);
return carry == 0 ? new String(sumArray, 1, sumArray.length - 1): new String(sumArray);
}

  牺牲了一定的空间复杂度 如果实际应用中 数非常大不建议这样做

leetcode解题:Add binary问题的更多相关文章

  1. LeetCode 面试:Add Binary

    1 题目 Given two binary strings, return their sum (also a binary string). For example,a = "11&quo ...

  2. leetCode 67.Add Binary (二进制加法) 解题思路和方法

    Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...

  3. 【leetcode】Add Binary

    题目简述: Given two binary strings, return their sum (also a binary string). For example, a = "11&q ...

  4. Java for LeetCode 067 Add Binary

    Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...

  5. Java [Leetcode 67]Add Binary

    题目描述: Given two binary strings, return their sum (also a binary string). For example,a = "11&qu ...

  6. LeetCode解题报告:Binary Tree Postorder Traversal

    Given a binary tree, return the postorder traversal of its nodes' values. For example:Given binary t ...

  7. LeetCode 67. Add Binary (二进制相加)

    Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...

  8. [LeetCode] 67. Add Binary 二进制数相加

    Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...

  9. LeetCode 67. Add Binary

    Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...

  10. Leetcode 解题 Add Two Numbers Python

    原题: You are given two linked lists representing two non-negative numbers. The digits are stored in r ...

随机推荐

  1. [PHP]使用PHPMailer发送带附件并支持HTML内容的邮件

    来源:http://www.helloweba.com/view-blog-205.html PHPMailer是一个封装好的PHP邮件发送类,支持发送HTML内容的电子邮件,以及可以添加附件发送,并 ...

  2. MySQL中存储过程+事件的使用方法

    一.背景 将界面操作日志存储在MySQL数据库中的operationlog表中,如果该表不能自动备份,表中的数据会越来越多,影响速度.可以定期将表中数据备份到另外一个表中来解决. 二.解决方案 1.使 ...

  3. kendoTreeView,需要注意的地方

    今天使用了下kendoUI中的TreeView控件,一开始的时候总是不成功, 总是会报 Uncaught TypeError: Cannot read property 'toLowerCase' o ...

  4. APS.net controller

    在controller 路由配置为: routes.MapRoute( name:"Default", url:"{controller}/{action}/{id}&q ...

  5. spring的helloworld

    前两天接到了支付宝的电话面试,问了我好多java中的知识,知识姐不看java好多年,这猛一问知道的东西还真是不少啊.趁着现在精力还算是比较旺盛,再把spring重新理一理,为下一次面试做准备. 学习每 ...

  6. Python+Google Geocoding

    本文主要介绍使用Python调用Google Geocoding API进行地址到地理坐标的转换. Google Geocoding参考https://developers.google.com/ma ...

  7. 因为此版本的应用程序不支持其项目类型(.csproj)”之解

    有的时候vs无缘无故的出现如下错误:"因为此版本的应用程序不支持其项目类型(.csproj),若要打开它,请使用支持此类型项目的版本" 解决办法:如果是这个提示,可能是由于你安装m ...

  8. Session和Cookie的作用以及实现

    http://www.cnblogs.com/xiaoshitoutest/p/6103790.html

  9. 关于sizeof 跟strlen 的区别

    char *t = "我a"; char t1[MAX_PATH] = "aaaaaa"; char display1[MAX_PATH]; char disp ...

  10. window.location 结构

    属性 含义   protocol 协议   hostname 服务器的名字   port 端口   pathname URL中主机名后的部分   search "?"后的部分,又称 ...