zoukankan      html  css  js  c++  java
  • 力扣(LeetCode)二进制求和 个人题解

    给定两个二进制字符串,返回他们的和(用二进制表示)。

    输入为非空字符串且只包含数字 1 和 0

    示例 1:

    输入: a = "11", b = "1"
    输出: "100"

    示例 2:

    输入: a = "1010", b = "1011"
    输出: "10101"




    思路比较清晰,模拟汇编中二进制加法的做法,对缺位补0后,然后依次相加两数和CF进位标志位。

    最后结束时,判断CF是否为1,为1代表最左边有进位,所以需要补1,如果没有则直接输出。

    由于JAVA里INT类型到 CHAR类型或者STRING类型需要使用函数转换,要注意不要搞错了类型。

     另外如果对空间比较敏感的,字符串补零的做法可以使用IF-ELSE解决。

    代码如下:

    class Solution {
        public String addBinary(String a, String b) {
            if (a.length() < b.length()) {
                String tmp = a;
                a = b;
                b = tmp;
            }
            String zeros = "";
            for (int i = 0; i < a.length() - b.length(); i++) {
                zeros += "0";
            }
            b = zeros + b;
            String ans = "";
            int cf = 0;
            for (int i = a.length() - 1; i >= 0; i--) {
                int tmp = a.charAt(i) + b.charAt(i) - '0' - '0' + cf;
                if (tmp >= 2) {
                    cf = 1;
                    tmp -= 2;
                } else {
                    cf = 0;
                }
                ans = String.valueOf(tmp) + ans;
            }
            if (cf == 1)
                ans = "1" + ans;
            return ans;
        }
    }
  • 相关阅读:
    [OpenGL]用OpenGL制作动画
    主管喜欢什么样的程序员
    windows下使用git管理代码,其中出现的问题的解决办法
    iOS7隐藏状态栏 status Bar
    [微信开发_02]环境搭建
    Matlab PCA 算法
    Git学习之msysGit环境支持
    Git学习之Git 暂存区
    Git学习之Git检出
    STL——(3)string容器
  • 原文地址:https://www.cnblogs.com/axiangcoding/p/10404218.html
Copyright © 2011-2022 走看看