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;
        }
    }
    
  • 相关阅读:
    配置FTP服务
    Tomcat
    LNMP环境配置(下)
    LNMP环境配置(上)
    Ansible---
    Ansible
    正则三剑客-------grep
    Docker仓库的使用与维护
    Docker 引擎的安装 -->>存储库安装
    shell脚本实例
  • 原文地址:https://www.cnblogs.com/stul/p/11489997.html
Copyright © 2011-2022 走看看