leetcode実装「10001」+「1011」はバイナリ加算の結果を返す

6308 ワード

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


1
public class Solution { 2 public String addBinary(String a, String b) { 3 char c1[]=a.toCharArray(); 4 char c2[]=b.toCharArray(); 5 int len1=a.length(); 6 int len2=b.length(); 7 int lo=len1; 8 if(len1<=len2) 9 { 10 lo=len2; 11 } 12 int ans[]=new int[lo+1]; 13 int k=0; 14 int ia=len1-1; 15 int ib=len2-1; 16 int jinwei=0; 17 while(ia>=0&&ib>=0) 18 { 19 ans[k]=c1[ia--]-'0'+c2[ib--]-'0'+jinwei; 20 21 jinwei=ans[k]/2; 22 ans[k]=ans[k]%2; 23 k++; 24 25 } 26 27 while(ia>=0) 28 { 29 30 ans[k]=c1[ia--]-'0'+jinwei; 31 jinwei=ans[k]/2; 32 ans[k]=ans[k]%2; 33 k++; 34 35 } 36 while(ib>=0) 37 { 38 39 ans[k]=c2[ib--]-'0'+jinwei; 40 jinwei=ans[k]/2; 41 ans[k]=ans[k]%2; 42 k++; 43 44 } 45 StringBuffer sbf=new StringBuffer(); 46 if(jinwei==1) sbf.append(1); 47 48 for(int j=lo-1;j>=0;j--) 49 { 50 sbf.append(ans[j]); 51 52 } 53 54 55 return sbf.toString(); 56 57 } 58 }