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 ...
随机推荐
- python文件操作实例
把目录 E:\ 下面所有 后缀名为 .py 的 文件复制到 E:\PyLearn #coding:utf-8 import os import shutil def getfile(srcDir,ds ...
- 关于angularJS绑定数据时自动转义html标签
关于angularJS绑定数据时自动转义html标签 angularJS在进行数据绑定时默认是会以文本的形式输出,也就是对你数据中的html标签不进行转义照单全收,这样提高了安全性,防止了html标签 ...
- TeXmacs 中输入狄拉克 braket 符号
TeXmacs的数学模式下,默认会对括号进行自动补齐.这也导致输入狄拉克 braket 符号时得到的可能不是你想要的结果.经测试,可用以下输入方式输入 (以下 _ 表示光标所在位置,Tab代表Tab键 ...
- redis 事务
概述 相信学过MySQL等其他数据库的同学对事务这个词都不陌生,事务表示的是一组动作,这组动作要么全部执行,要么全部不执行.为什么会有这样的需求呢?看看下面的场景: 微博是一个弱关系型社交网络,用户之 ...
- EUI ToggleButton ToggleSwitch 实现类似音乐开关按钮
一 ToggleButton和ToggleSwitch区别 没区别,就是继承... export class ToggleSwitch extends ToggleButton { /** * @la ...
- Nginx 和 PHP的安装配置
1.安装PHP(注意系统默认安装了php,要安装高版本之前最好卸载旧版本,因为这个原因纠结了四个小时) ./configure \ --prefix=/usr/local/php \ --exec-p ...
- jenkins调度selenium脚本不打开浏览器解决办法
原文地址: http://blog.csdn.net/achang21/article/details/45096003 The web browser doesn't show while run ...
- MySQL连接线程kill利器之pt-kill
如何每10秒检查一次,杀死指定用户超过100秒的查询? pt-kill \ --no-version-check \ --host 127.0.0.1 --port 3306 --user 'xxxx ...
- VLAN 间路由的几种方法
方法一:给每个VLAN去分配一个路由器的物理连接第一步,PC设置IP地址和网关192.168.2.2/24 网关是192.168.2.1192.168.3.2/24 网关是192.168.3.1第二步 ...
- android subclipse subversive
subclipse - http://subclipse.tigris.org/update_1.10.x android 开源框架 直接拿来用!最火的Android开源项目整理 http://blo ...