用add存儲每次相加時的進位 記得最后循環結束后,要再次加一次add
改進:
public String addBinary1(String a, String b) { int m = a.length(); int n = b.length(); int carry = 0; String res = ""; int maxLen = Math.max(m, n); for (int i = 0; i < maxLen; i++) { int p = 0, q = 0; if (i < m) p = a.charAt(m - 1 - i) - '0'; else p = 0; if (i < n) q = b.charAt(n - 1 - i) - '0'; else q = 0; int tmp = p + q + carry; carry = tmp / 2; res += tmp % 2; } return (carry == 0) ? res : "1" + res; }二進制加法都是從最低位(從右加到左)。所以對兩個字符串要從最后一位開始加,如果遇見長度不一的情況,就把短的字符串高位補0. 每輪計算要加上進位,最后跳出循環后要堅持進位是否為1,以便更新結果。
新聞熱點
疑難解答