67. 二进制求和

  1. class Solution {
  2. public String addBinary(String a, String b) {
  3. Deque<Character> ansSeq = new LinkedList<>();
  4. int indexA = a.length() - 1;
  5. int indexB = b.length() - 1;
  6. int flag = 0;
  7. while (indexA >= 0 || indexB >= 0) {
  8. char cha = (indexA >= 0 ? a.charAt(indexA) : '0');
  9. char chb = (indexB >= 0 ? b.charAt(indexB) : '0');
  10. int sum = (cha - '0') + (chb - '0') + flag;
  11. if (sum == 0) {
  12. ansSeq.add('0');
  13. flag = 0;
  14. } else if (sum == 1) {
  15. ansSeq.add('1');
  16. flag = 0;
  17. } else if (sum == 2) {
  18. ansSeq.add('0');
  19. flag = 1;
  20. } else {
  21. ansSeq.add('1');
  22. flag = 1;
  23. }
  24. --indexA;
  25. --indexB;
  26. }
  27. if (flag == 1)
  28. ansSeq.add('1');
  29. StringBuilder ans = new StringBuilder();
  30. while (!ansSeq.isEmpty())
  31. ans.append(ansSeq.removeLast());
  32. return ans.toString();
  33. }
  34. }