[leetcode]Add Binary

不要忘记在最后append进位的1,如果有的话;
一开始用while写的很快,忘记了i++,死循环了;
a+b的情况下,忘记了-'0'两次;
还有是要a.charAt(lenA-i-1),一开始用a.charAt(i)了,脑子一乱忘记了0是最左边的;

public class Solution {
    public String addBinary(String a, String b) {
        int carrior = 0;
		ArrayList<Character> list = new ArrayList<Character>();
        int lenA = a.length();
        int lenB = b.length();
		for (int i = 0; i < lenA || i < lenB; i++)
		{
			if (i >= lenA)
			{
				int r = carrior + b.charAt(lenB-i-1) - '0';
				carrior = r / 2;
				r = r % 2;
				list.add((char)(r + '0'));
			}
			else if (i >= lenB)
			{
				int r = carrior + a.charAt(lenA-i-1) - '0';
				carrior = r / 2;
				r = r % 2;
				list.add((char)(r + '0'));
			}
			else
			{
				int r = carrior + a.charAt(lenA-i-1) + b.charAt(lenB-i-1) - '0' - '0';
				carrior = r / 2;
				r = r % 2;
				list.add((char)(r + '0'));
			}
		}
		if (carrior != 0) list.add((char)(carrior + '0'));
		StringBuffer sb = new StringBuffer();
		for (int j = list.size() - 1; j >= 0; j--)
		{
			sb.append(list.get(j));
		}
		return sb.toString();
    }
}

  

原文地址:https://www.cnblogs.com/lautsie/p/3309742.html