1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
public String (String a, String b) { int[] ans = new int[a.length() + b.length() + 1]; int ia = a.length() - 1, ib = b.length() - 1, i = ans.length - 1; int carry = 0; while (ia >= 0 && ib >= 0) { int sum = carry + a.charAt(ia--) - '0' + b.charAt(ib--) - '0'; if (sum == 3) { carry = 1; ans[i--] = 1; } else if (sum == 2) { carry = 1; ans[i--] = 0; } else { ans [i--] = sum; carry = 0; } } while (ia >= 0) { int sum = carry + a.charAt(ia--) - '0'; if (sum == 2) { carry = 1; ans[i--] = 0; } else { carry = 0; ans[i--] = sum; } } while (ib >= 0) { int sum = carry + b.charAt(ib--) - '0'; if (sum == 2) { carry = 1; ans[i--] = 0; } else { carry = 0; ans[i--] = sum; } } if (carry != 0) { ans[i--] = carry; } i = 0; while (i < ans.length && ans[i] == 0) ++i; StringBuilder sb = new StringBuilder(); while (i< ans.length) { sb.append(ans[i++]); } return sb.length() == 0 ? "0" : sb.toString(); }
|
近期评论