leetCode の「67. Add Binary」を解いた。
https://leetcode.com/problems/add-binary/
Java の char 型の引き算の結果の型など、気を付ける点があったので、ここに解答を残しておく。
public String addBinary(String a, String b) { StringBuilder sb = new StringBuilder(); int i = a.length() - 1; int j = b.length() - 1; int carry = 0; while (i >= 0 || j >= 0) { int sum = carry; if (i >= 0) { // char 同士の引き算の結果は int になる。 // '0' - '0' = 0 // '1' - '0' = 1 int curNum = a.charAt(i) - '0'; sum += curNum; } if (j >= 0) { int curNum = b.charAt(j) - '0'; sum += curNum; } // sb.insert(0, sum % 2) としたら速度が落ちたので、append して最後に reverse している。 sb.append(sum % 2); carry = sum / 2; i--; j--; } // 最後の carry が立っていたら、1 を追加。 if (carry != 0) { sb.append(carry); } return sb.reverse().toString(); }