[leetcode]Add Binary
2015-11-21 00:04
411 查看
题目描述如下:
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
接到题目轻松+愉悦地写了第一版:
然后当然因为天真挂掉了。输入的参考数据位数远超一般的类型,所以很显然这是对字符串的操作。之所以把这段放上来,因为toBinaryString这个函数好神奇啊以前都不知道没用过(确定不是你水么= =…)。
既然是字符串的加减法,常规的方法就是反转一下字符串,然后加个carry位表示进位,加的时候先处理较短的字符串。附上代码:
两个地方mark:
java中反转字符串的方法(利用StringBuffer);
String.valueOf((char)(tmp + ‘0’))这里,要进行强制转换。
题目链接:https://leetcode.com/problems/add-binary/
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
接到题目轻松+愉悦地写了第一版:
public String addBinary(String a, String b) { int res = BinaryToInt(a) + BinaryToInt(b); return Integer.toBinaryString(res); } public int BinaryToInt(String num){ int res = 0; for(int i = 0; i < num.length(); i++){ res += (Math.pow(2, i)) * (num.charAt(num.length() - i - 1) - '0'); } return res; }
然后当然因为天真挂掉了。输入的参考数据位数远超一般的类型,所以很显然这是对字符串的操作。之所以把这段放上来,因为toBinaryString这个函数好神奇啊以前都不知道没用过(确定不是你水么= =…)。
既然是字符串的加减法,常规的方法就是反转一下字符串,然后加个carry位表示进位,加的时候先处理较短的字符串。附上代码:
public class Solution { public String addBinary(String a, String b) { a = reverseStr(a); b = reverseStr(b); String longerStr = a.length() > b.length() ? a : b; String shortterStr = a.length() > b.length() ? b : a; String res = ""; int i, tmp, carry = 0; for(i = 0; i < shortterStr.length(); i++){ tmp = shortterStr.charAt(i) - '0' + longerStr.charAt(i) - '0' + carry; if(tmp >= 2){ tmp -= 2; carry = 1; }else{ carry = 0; } res += String.valueOf((char)(tmp + '0')); } for(; i < longerStr.length(); i++){ tmp = longerStr.charAt(i) - '0' + carry; if(tmp >= 2){ tmp -= 2; carry = 1; }else{ carry = 0; } res += String.valueOf((char)(tmp + '0')); } if(carry == 1) res += "1"; return reverseStr(res); } public String reverseStr(String s){ StringBuffer sb=new StringBuffer(s); sb.reverse(); return sb.toString(); } }
两个地方mark:
java中反转字符串的方法(利用StringBuffer);
String.valueOf((char)(tmp + ‘0’))这里,要进行强制转换。
题目链接:https://leetcode.com/problems/add-binary/
相关文章推荐
- 并发编程学习链接
- android post HttpURLConnection乱码解决
- 黑马程序员——Java语言的基础语法总结(下)
- 阿里云系列——7.阿里云IIS系列详解(过程+通用+最新)
- JiaoZhu and WAR3
- MySQL Union ALL Union Minus 学习
- DataOdinalRegression
- 第一次Sprint
- 受 Mozilla 启发,苹果宣布更新 WebKit 反跟踪政策
- 新的Raspbian带来了性能的改进,更新了Raspberry Pi包
- webpack bable-loader升级无法编译jsx es6
- javascript实现Email邮件显示与删除功能
- JavaScript实现自动生成网页元素功能(按钮、文本等)
- js实现索引图片切换效果
- javascript实现动态统计图开发实例
- 超详细的javascript数组方法汇总
- jQuery实现分隔条左右拖动功能
- 分享经典的JavaScript开发技巧
- jquery实现select选择框内容左右移动代码分享
- 解决jquery插件:TypeError:$.browser is undefined报错的方法