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 }