• LeetCode 67. Add Binary


    分析

    难度 易

    来源

    https://leetcode.com/problems/add-binary/description/

    题目

    Given two binary strings, return their sum (also a binary string).

    The input strings are both non-empty and contains only characters 1 or 0.

    Example 1:

    Input: a = "11", b = "1"
    Output: "100"

    Example 2:

    Input: a = "1010", b = "1011"
    Output: "10101"

    解答

     1 package LeetCode;
     2 
     3 public class L67_AddBinary {
     4     private static String getSum(String a,String b){//a比b长
     5         int len1=a.length();
     6         int len2=b.length();
     7         int[] res=new int[len1+1];//比a多一位,以备进位
     8         StringBuilder str=new StringBuilder();
     9         //StringBuilder res=new StringBuilder();
    10         int flag=0;//表示进位
    11         //int len=Math.min(len1,len2);//求和部分长度
    12         for(int i=0;i<len2;i++){//求和部分长度
    13             int aNum=a.charAt(len1-1-i)-'0';//从数字低位,即数组高位起逐位相加
    14             int bNum=b.charAt(len2-1-i)-'0';
    15             int remainder=(aNum+bNum+flag)%2;
    16             res[len1-i]=remainder;
    17             flag=(aNum+bNum+flag)/2;
    18         }
    19         for(int i=0;i<len1-len2;i++){//与b求和后多余部分
    20             int aNum=a.charAt(len1-len2-1-i)-'0';//从数字低位,即数组高位起逐位相加
    21             int remainder=(aNum+flag)%2;
    22             res[len1-len2-i]=remainder;
    23             flag=(aNum+flag)/2;
    24         }
    25         if (flag==1){
    26             res[0]=1;
    27         }
    28         if (flag==1){
    29             str.append("1");
    30             for(int i=0;i<len1;i++){
    31                 str.append(res[i+1]);
    32             }
    33         }else{
    34             for(int i=0;i<len1;i++){
    35                 str.append(res[i+1]);
    36             }
    37         }
    38         return str.toString();
    39     }
    40     public String addBinary(String a, String b) {
    41         int len1=a.length();
    42         int len2=b.length();
    43         if(len1>len2)
    44             return getSum(a,b);
    45         else
    46             return getSum(b,a);
    47     }
    48 
    49     public static void main(String[] args){
    50         String a1="11";
    51         String b1="1";
    52         String a2="100";
    53         String b2="110010";
    54         L67_AddBinary l67=new L67_AddBinary();
    55         System.out.println(l67.addBinary(a2,b2));
    56     }
    57 }

     

    博客园的编辑器没有CSDN的编辑器高大上啊
  • 相关阅读:
    v-charts 使用markline标线
    覆盖率平台(5)- 生成覆盖率报告
    覆盖率平台(4)- 测程启动
    覆盖率平台(3)- 测程
    覆盖率平台(2)- 服务配置
    vue路由this.route.push跳转页面不刷新
    递归对比json
    ssh远程执行遇到的一些坑
    免密git clone/git pull
    git用远程代码强制覆盖本地代码
  • 原文地址:https://www.cnblogs.com/flowingfog/p/9815798.html
Copyright © 2020-2023  润新知