其他分享
首页 > 其他分享> > LeetCode 67

LeetCode 67

作者:互联网

题目

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

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

示例 1:

输入: a = “11”, b = “1”
输出: “100”
示例 2:

输入: a = “1010”, b = “1011”
输出: “10101”

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-binary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

代码

// Author     : 牛兴炜
// Time       : 2020/2/3 16:18
// File       : BinaryChange.java
// Describe   : 二进制求和
// IDE        : IntelliJ IDEA
package leekode;

import java.util.Scanner;
import java.util.Stack;

public class BinaryChange {
    public String addBinary(String a, String b) {
        // 找到a和长度的最大值
        StringBuffer stringBuffer = new StringBuffer();
        int alength = a.length() - 1;
        int blength = b.length() - 1;
//        int MAX=a.length();
//        if(MAX<b.length()) MAX=b.length();
//        int arr[] = new int[MAX+1];//建立数组
//        Stack<Integer> stack = new Stack<>();
        int More = 0;//进位标志
//        for (int i = alength-1,j=blength-1; j>=0&&i>=0 ; j--,i--) {
        while (alength >= 0 || blength >= 0) {
            int sum = More;
            if (alength >= 0) {
                sum += a.charAt(alength) - '0';
                alength--;
            }
            if (blength >= 0) {
                sum += b.charAt(blength) - '0';
                blength--;
            }
            stringBuffer.append(sum % 2);
            More = sum / 2;

        }
        if (More != 0)
            stringBuffer.append(1);

        return stringBuffer.reverse().toString();
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String a = in.nextLine();
        String b = in.nextLine();
        BinaryChange binaryChange = new BinaryChange();
        System.out.println(binaryChange.addBinary(a, b));
        in.close();
    }
}

在这里插入图片描述

农村娃的成长之路 发布了72 篇原创文章 · 获赞 3 · 访问量 3119 私信 关注

标签:blength,String,int,sum,67,new,LeetCode,alength
来源: https://blog.csdn.net/weixin_44135909/article/details/104160071