leetcode解题:Add binary问题
顺便把之前做过的一个简单难度的题也贴上来吧
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问题的更多相关文章
- LeetCode 面试:Add Binary
1 题目 Given two binary strings, return their sum (also a binary string). For example,a = "11&quo ...
- leetCode 67.Add Binary (二进制加法) 解题思路和方法
Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...
- 【leetcode】Add Binary
题目简述: Given two binary strings, return their sum (also a binary string). For example, a = "11&q ...
- Java for LeetCode 067 Add Binary
Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...
- Java [Leetcode 67]Add Binary
题目描述: Given two binary strings, return their sum (also a binary string). For example,a = "11&qu ...
- LeetCode解题报告:Binary Tree Postorder Traversal
Given a binary tree, return the postorder traversal of its nodes' values. For example:Given binary t ...
- LeetCode 67. Add Binary (二进制相加)
Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...
- [LeetCode] 67. Add Binary 二进制数相加
Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...
- LeetCode 67. Add Binary
Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...
- Leetcode 解题 Add Two Numbers Python
原题: You are given two linked lists representing two non-negative numbers. The digits are stored in r ...
随机推荐
- 解决ASP.Net第一次访问慢的处理(IIS8)
本篇经验以IIS8,Windows Server 2012R2做为案例. IIS8 运行在 Windows Server 2012 and Windows 8 版本以上的平台上. IIS中应用程序池和 ...
- 第六百一十六天 how can I 坚持
有时间还是多学点东西吧,webservice.. 晚上看了个电影<我们的十年>,乔任梁死了..买了个大柚子,上火好难受.有些困惑啊. 有没有梦想,只是不想让人来到这这个世界,什么都没留下就 ...
- kafka生产消息的速度跟什么有关?
kafka的吞吐量很大,在保证带宽的情况下,网上的一些测试表明3台broker,没有replication,6个partition的情况下,一般的写入速度可以达到300MB/s.参考:kakfa测试 ...
- sql server之临时表
一.临时表介绍 临时表在运行被创建的,虽说它的名字叫做临时表,可是对它的操作和我们平时操控表的操作基本一样, 比如最简单增.删.改.查等等.但是,需要注意的是临时表的创建是有范围限制的. 二.临时表分 ...
- C#检测键盘输入
void Update(){ if (Input.GetKey(KeyCode.W)) { go stread; } if (Input.GetKey ...
- avi文件打开出现花屏、打开不了问题
以avi为后缀名文件,其编码格式并不是单一的,而是多种格式都可以以avi作为后缀. AVI(Audio Video Interleaved的缩写)是一种RIFF(Resource Interchang ...
- node中global
global:表示Node所在的全局环境,类似于浏览器的window对象.需要注意的是,如果在浏览器中声明一个全局变量,实际上是声明了一个全局对象的属性,比如var x = 1等同于设置window. ...
- asp.net TextBoxWatermark添加水印提示
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...
- js 什么是变量的提升?
- 设置centos7默认运行级别
1.查看当前运行级别 systemctl get-default 2.设置命令行运行级别 systemctl set-default multi-user.target 3.设置图形化运行级别 sys ...