Add Binary | leetcode 67 【Java解题报告】
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100".
public class Solution { public static String addBinary(String a, String b) { if(a.equals("")) return b; if(b.equals("")) return a;<span style="white-space:pre"> </span>//如果b为空,则返回a int al = a.length() - 1; <span style="white-space:pre"> </span>//字符串a的长度减1,刚好指向数组的末尾 int bl = b.length() - 1; int t = Math.max(al, bl) + 1; char[] arr = new char[t+1]; <span style="white-space:pre"> </span>//设置要创建char数组的长度 int c = 0; /*char[] str1 = a.toCharArray(); char[] str2 = b.toCharArray();*/<span style="white-space:pre"> </span>//注释部分是将字符串放入数组中,这种方法以后再实现,如果读者有兴趣的话,可以自己尝试实现。 for(; al>=0 && bl>=0; al--, bl--, t--) {<span style="white-space:pre"> </span>//这里实现a1与b1的位相加 int s = a.charAt(al) + b.charAt(bl) + c - '0' - '0'; if(s==2) { c = 1; s = 0; } else if(s == 3) { c = 1; s = 1; } else c = 0; arr[t] = (char)(s+'0'); } while (al >= 0) {<span style="white-space:pre"> </span>//若b字符串长度小于a长度,则继续 if(a.charAt(al) - '0' + c > 1) { arr[t] = 0 + '0'; c = 1; } else { arr[t] = (char) (a.charAt(al) + c); c = 0; } t--; al--; } while (bl >= 0) { if(b.charAt(bl) - '0' + c > 1) { arr[t] = 0 + '0'; c = 1; } else { arr[t] = (char) (b.charAt(bl) + c); c = 0; } t--; bl--; } if(c == 1) arr[0] = 1+'0'; //将数组转化为字符串输出 return new String(arr).trim(); } }
1 public class Solution { 2 public static String addBinary(String a, String b) { 3 if(a.equals("")) return b; 4 if(b.equals("")) return a;<span style="white-space:pre"> </span>//如果b为空,则返回a 5 int al = a.length() - 1; <span style="white-space:pre"> </span>//字符串a的长度减1,刚好指向数组的末尾 6 int bl = b.length() - 1; 7 int t = Math.max(al, bl) + 1; 8 char[] arr = new char[t+1]; <span style="white-space:pre"> </span>//设置要创建char数组的长度 9 int c = 0; 10 /*char[] str1 = a.toCharArray(); 11 char[] str2 = b.toCharArray();*/<span style="white-space:pre"> </span>//注释部分是将字符串放入数组中,这种方法以后再实现,如果读者有兴趣的话,可以自己尝试实现。 12 for(; al>=0 && bl>=0; al--, bl--, t--) {<span style="white-space:pre"> </span>//这里实现a1与b1的位相加 13 int s = a.charAt(al) + b.charAt(bl) + c - '0' - '0'; 14 if(s==2) { 15 c = 1; 16 s = 0; 17 } else if(s == 3) { 18 c = 1; 19 s = 1; 20 } 21 else c = 0; 22 arr[t] = (char)(s+'0'); 23 } 24 while (al >= 0) {<span style="white-space:pre"> </span>//若b字符串长度小于a长度,则继续 25 if(a.charAt(al) - '0' + c > 1) { 26 arr[t] = 0 + '0'; 27 c = 1; 28 } else { 29 arr[t] = (char) (a.charAt(al) + c); 30 c = 0; 31 } 32 t--; 33 al--; 34 } 35 while (bl >= 0) { 36 if(b.charAt(bl) - '0' + c > 1) { 37 arr[t] = 0 + '0'; 38 c = 1; 39 } else { 40 arr[t] = (char) (b.charAt(bl) + c); 41 c = 0; 42 } 43 t--; 44 bl--; 45 } 46 if(c == 1) arr[0] = 1+'0'; 47 //将数组转化为字符串输出 48 return new String(arr).trim(); 49 } 50 }
1 public class Solution { 2 public static String addBinary(String a, String b) { 3 if(a.equals("")) return b; 4 if(b.equals("")) return a;<span style="white-space:pre"> </span>//如果b为空,则返回a 5 int al = a.length() - 1; <span style="white-space:pre"> </span>//字符串a的长度减1,刚好指向数组的末尾 6 int bl = b.length() - 1; 7 int t = Math.max(al, bl) + 1; 8 char[] arr = new char[t+1]; <span style="white-space:pre"> </span>//设置要创建char数组的长度 9 int c = 0; 10 /*char[] str1 = a.toCharArray(); 11 char[] str2 = b.toCharArray();*/<span style="white-space:pre"> </span>//注释部分是将字符串放入数组中,这种方法以后再实现,如果读者有兴趣的话,可以自己尝试实现。 12 for(; al>=0 && bl>=0; al--, bl--, t--) {<span style="white-space:pre"> </span>//这里实现a1与b1的位相加 13 int s = a.charAt(al) + b.charAt(bl) + c - '0' - '0'; 14 if(s==2) { 15 c = 1; 16 s = 0; 17 } else if(s == 3) { 18 c = 1; 19 s = 1; 20 } 21 else c = 0; 22 arr[t] = (char)(s+'0'); 23 } 24 while (al >= 0) {<span style="white-space:pre"> </span>//若b字符串长度小于a长度,则继续 25 if(a.charAt(al) - '0' + c > 1) { 26 arr[t] = 0 + '0'; 27 c = 1; 28 } else { 29 arr[t] = (char) (a.charAt(al) + c); 30 c = 0; 31 } 32 t--; 33 al--; 34 } 35 while (bl >= 0) { 36 if(b.charAt(bl) - '0' + c > 1) { 37 arr[t] = 0 + '0'; 38 c = 1; 39 } else { 40 arr[t] = (char) (b.charAt(bl) + c); 41 c = 0; 42 } 43 t--; 44 bl--; 45 } 46 if(c == 1) arr[0] = 1+'0'; 47 //将数组转化为字符串输出 48 return new String(arr).trim(); 49 } 50 }

浙公网安备 33010602011771号