LeetCode 67. Add Binary

一 题目

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

The input strings are both non-empty and contains only characters 1 or 0.

Example 1:

Input: a = "11", b = "1"
Output: "100"

Example 2:

Input: a = "1010", b = "1011"
Output: "10101"

二 分析

easy级别,又事数学类型。求字符串二进制的求和运算,我先尝试转换为long直接算。

public static String addBinary(String a, String b) {
		//int len = a.length()>=b.length()? b.length():a.length();
		Long al = Long.parseLong(a, 2);
		Long bl = Long.parseLong(b, 2);
        
		long tmp = al+bl;
		String res = Long.toBinaryString(tmp);
		return res;
    }

但是遇到这种case就跪了。

"10100000100100110110010000010101111011011001101110111111111101000000101111001110001111100001101"
"110101001011101110001111100110001010100001101011101010000011011011001011101111001100000011011110011"

还是老实的回来做吧。

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String res = addBinary("11","1");
		System.out.println( res);
		String res1 = addBinary("1010","1011");
		System.out.println( res1);
		
	}

	public static String addBinary(String a, String b) {
		//遍历最长路径
		int len = a.length()>=b.length()? a.length():b.length();
		String res = "";
		int tmp = 0;
		StringBuffer sb = new StringBuffer();
        for(int i=0;i<len;i++){
        	int ai = i<a.length()? a.charAt(a.length()-i-1)-'0':0;
        	int bi = i<b.length()? b.charAt(b.length()-i-1)-'0':0;
        	int sum = ai + bi + tmp;
        	//保存本次的结果
        	sb.insert(0,(sum%2));
        	//进位
        	tmp = 	sum/2;  	
        }
		
		res = sb.toString();
		if(tmp==1){//最后还有进位的情况
			res ="1"+res;
		}
		return res;
    }

 

Runtime: 2 ms, faster than 70.12% of Java online submissions for Add Binary.

Memory Usage: 36.2 MB, less than 100.00% of Java online submissions for Add Binary.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值