首页 > 编程语言 > 详细

Java for LeetCode 067 Add Binary

时间:2015-05-16 13:15:03      阅读:140      评论:0      收藏:0      [点我收藏+]

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

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

解题思路:

JAVA实现如下:

static public String addBinary(String a, String b) {
		if (a.length() < b.length()) {
			String temp = a;
			a = b;
			b = temp;
		}
		boolean carry = false;
		StringBuilder sb = new StringBuilder(a);
		for (int i = 0; i < b.length(); i++) {
			if (b.charAt(b.length() - 1 - i) == ‘0‘) {
				if (sb.charAt(a.length() - 1 - i) == ‘0‘ && carry) {
					sb.replace(a.length() - 1 - i, a.length() - i, "1");
					carry = false;
				} else if (sb.charAt(a.length() - 1 - i) == ‘1‘ && carry)
					sb.replace(a.length() - 1 - i, a.length() - i, "0");
			} else {
				if (sb.charAt(a.length() - 1 - i) == ‘0‘ && !carry)
					sb.replace(a.length() - 1 - i, a.length() - i, "1");
				else if (sb.charAt(a.length() - 1 - i) == ‘1‘ && !carry) {
					sb.replace(a.length() - 1 - i, a.length() - i, "0");
					carry = true;
				}
			}
		}
		if (!carry)
			return sb.toString();
		for (int i = a.length() - b.length() - 1; i >= 0; i--)
			if (sb.charAt(i) == ‘0‘) {
				sb.replace(i, i + 1, "1");
				return sb.toString();
			} else
				sb.replace(i, i + 1, "0");
		sb.insert(0, ‘1‘);
		return sb.toString();
	}

 

Java for LeetCode 067 Add Binary

原文:http://www.cnblogs.com/tonyluis/p/4507624.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!