剑指offer-二进制加法

        题目:输入两个表示二进制的字符串,请计算它们的和,并以二进制字符串的形式输出。

package 剑指Offer.整数除法和二进制加法;

/**
 * @program:多线程和IO
 * @descripton:二进制加法
 * @题目:输入两个表示二进制的字符串,请计算它们的和,并以二进制字符串的形式输出。
 * @author:ZhengCheng
 * @create:2021/9/24-18:38
 **/
public class AddBybBinary {
    public static void main(String[] args) {
        String num1 = "10110";
        String num2 = "100111";
        String s = addByBinary(num1, num2);
        System.out.println(s);
    }

    private static String addByBinary(String str1, String str2) {
        StringBuilder sb = new StringBuilder();
        int i = str1.length()-1;
        int j = str2.length()-1;
        int tempNum = 0;        //tempNum 
        while ( i>=0|| j>= 0){
            int tempa = i >= 0? str1.charAt(i--) -'0':0;//重点步骤,注意判断i和j
            int tempb = j >= 0? str2.charAt(j--) -'0':0;
            int sum = tempa + tempb + tempNum;
             tempNum = sum >2?1:sum;
             sum = sum >= 2 ? sum-2:sum;
             sb.append(sum);
        }
        if (tempNum == 1){
            sb.append(1);
        }
        return sb.reverse().toString();
    }
}

 

上一篇:PHP大文件上传进度条分片


下一篇:JVM 内存模型