LeetCode-67. Add Binary

来源:互联网 发布:安邦 知乎 编辑:程序博客网 时间:2024/06/04 18:07

问题描述

  1. 给定两个字符串s1,s2,代表两个二进制数,字符串的最左端代表高位,最右边代表低位,返回两个二进制数相加后的值。
  2. 例如:s1=”11”,s2=”1”,返回:“100”.

解题思路

很简单的一道题,两个字符串的字符逐位相加即可,需要考虑进位的问题。

代码

public class Solution {    public String addBinary(String a, String b) {        if(a==null || a.length()==0)            return b;        if(b==null || b.length()==0)            return a;        if(a.length()<b.length()){            String tem=a;            a=b;            b=tem;        }//始终将较长的字符串赋给a        int[] array=new int[a.length()];        int i=array.length-1;        int k=b.length()-1;        int c=0;        while(i>=0){            int bint=(k<0?0:b.charAt(k)-'0');            array[i]=a.charAt(i)-'0'+bint+c;            if(array[i]>1){                array[i]=array[i]%2;                c=1;            }else{                c=0;            }            i--;            k--;        }        StringBuilder sb=new StringBuilder(a.length()+1);        if(c>0)            sb.append(1);        for(int j=0;j<a.length();j++){            sb.append(array[j]);        }        return sb.toString();    }}
原创粉丝点击