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