LeetCode Add Binary

本文介绍了一种将十进制加法转换为二进制加法的方法,通过实例演示了如何实现两个二进制字符串的相加,并返回结果作为新的二进制字符串。

Description:

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

Solution:

将十进制的加法变成二进制的加法,做了三四道类似的,大家应该很熟悉了。

import java.util.*;

public class Solution {
	public String addBinary(String a, String b) {
		String ans = "";

		if (a.length() > b.length()) {
			String c = a;
			a = b;
			b = c;
		}

		int la = a.length();
		int lb = b.length();

		int pre = 0, cha, chb, ch;
		for (int i = 0; i < la; i++) {
			cha = a.charAt(la - 1 - i) - '0';
			chb = b.charAt(lb - 1 - i) - '0';
			ch = cha + chb + pre;

			if (ch >= 2) {
				pre = 1;
				ch -= 2;
			} else {
				pre = 0;
			}
			ans = ch + ans;
		}

		if (la < lb) {
			for (int i = la; i < lb; i++) {
				if (pre == 0) {
					ans = b.substring(0, lb - i) + ans;
					break;
				}
				chb = b.charAt(lb - 1 - i) - '0';
				ch = pre + chb;

				if (ch >= 2) {
					pre = 1;
					ch -= 2;
				} else {
					pre = 0;
				}
				ans = ch + ans;
			}
		}

		if (pre == 1)
			ans = 1 + ans;

		int tot = 0;
		for (; tot < ans.length() - 1; tot++)
			if (ans.charAt(tot) == '0')
				continue;
			else
				break;
		ans = ans.substring(tot);

		return ans;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值