zoukankan      html  css  js  c++  java
  • LeetCode 二进制加法 java

    思路:

    二进制加法用手算,然后用代码实现。

    手算的时候,逢 2 进 1 。

    用代码实现的时候,一开始会想到将长短不一的字符串对齐。 其实没必要。

    找到字符串的长度,长度减 1 。 就是这个字符串的末尾, 然后从末尾开始相加。逢 2 进 1。 相加并不仅仅是两个字符相加,还有进位的相加。

    进位 : 进位用一个变量表示。

    每次的和用一个变量表示。

    把每次的和放进 StringBuilder 变量里面。 最后反转 转化成 String 。 就是答案。

    class Solution {
        public String addBinary(String a, String b) {
            char []a1 = a.toCharArray();
    		char []b1 = b.toCharArray();
    		int i = a1.length-1;
    		int j = b1.length-1;
    		int carry = 0;
    		StringBuilder ans = new StringBuilder();
    		while(i >= 0 || j >= 0 || carry != 0) {
    //			System.out.println("i:" + i + " j:" + j +"   a[i]: " + a1[i] + "  b[j]: " + b1[j]);
    			int aa = i >=0 ? a1[i--] - '0': 0;
    			int bb = j >=0 ? b1[j--] - '0': 0;
    
    			int sum = (aa + bb + carry)%2;
    			carry = (aa + bb + carry)/2;
    //			System.out.println("aa: " + aa + " bb:" + bb + " sum:" + sum + " carry:" + carry);
    			ans.append(sum);
    		}
    		String ansStr = ans.reverse().toString();
            return ansStr;
        }
    }
    
  • 相关阅读:
    生成器表达式
    列表生成式
    内置---排序(sorted)
    移动端摘要
    支付宝支付框js代码
    list-style-image不能设置位置
    vue-cli
    微信底部的菜单栏
    input在标签内设置禁止输入空格
    访问对象
  • 原文地址:https://www.cnblogs.com/stul/p/11489997.html
Copyright © 2011-2022 走看看