fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10.  
  11.  
  12. //http://w...content-available-to-author-only...p.com/question?id=5727644228255744
  13.  
  14.  
  15. public static String sumBinary(String s1, String s2) {
  16.  
  17. char[] a, b;
  18.  
  19. if(s1.length()>s2.length()){
  20. a = s1.toCharArray();
  21. b = s2.toCharArray();
  22. }else {
  23. b = s1.toCharArray();
  24. a = s2.toCharArray();
  25. }
  26.  
  27. int length = s1.length() > s2.length() ? s1.length() + 1 : s2.length() + 1;
  28. char[] sum = new char[length];
  29.  
  30. char c = '0';
  31.  
  32. int i = s1.length() - 1, j = s2.length() - 1; //for looks code easy
  33.  
  34.  
  35. while( i>=0 ) {
  36. if(a[i] == '0' && c == '0') {
  37. if(j<0) sum[i+1] = '0';
  38. else
  39. sum[i+1] = b[j];
  40.  
  41. }else if(a[i] == '0' && c == '1') {
  42. if(j<0) {
  43. sum[i+1] = '1';
  44. c = '0';
  45. }else if(b[j] == '0') {
  46. sum[i+1] = '1';
  47. c = '0';
  48. }else{
  49. sum[i+1] = '0';
  50. c = '1';
  51. }
  52.  
  53. }else if(a[i] == '1' && c == '1') {
  54. if(j<0) {
  55. sum[i+1] = '0';
  56. c = '1';
  57. }else if(b[j] == '0') {
  58. sum[i+1] = '0';
  59. c = '1';
  60. }else{
  61. sum[i+1] = '1';
  62. c = '1';
  63. }
  64.  
  65.  
  66. }else if(a[i] == '1' && c == '0') {
  67. if(j<0) {
  68. sum[i+1] = '1';
  69. //c == '0';
  70. } else if(b[j] == '0') {
  71. sum[i+1] = '1';
  72. }else {
  73. sum[i+1] = '0';
  74. c='1';
  75. }
  76.  
  77. }
  78.  
  79.  
  80.  
  81.  
  82. i--;
  83. j--;
  84. }
  85.  
  86. if(c == '1') sum[0] = '1';
  87. // System.out.println(sum);
  88.  
  89. return new String(sum); // or return sum?
  90. }
  91.  
  92. public static void main(String[] args) {
  93.  
  94.  
  95. System.out.println(sumBinary("", ""));
  96. System.out.println(sumBinary("0", "0"));
  97. System.out.println(sumBinary("1", "1"));
  98. System.out.println(sumBinary("0111101", "0001101"));
  99. System.out.println(sumBinary("1111", "0000"));
  100. System.out.println(sumBinary("1010", "0101"));
  101. System.out.println(sumBinary("1111", "1111"));
  102.  
  103. System.out.println(sumBinary("1111", ""));
  104.  
  105. System.out.println(sumBinary("1111", "1"));
  106.  
  107. System.out.println(sumBinary("1111", "00"));
  108.  
  109. System.out.println(sumBinary("1111111111111111", "111"));
  110.  
  111.  
  112. }
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121. }
Success #stdin #stdout 0.1s 320320KB
stdin
Standard input is empty
stdout

0
10
1001010
1111
1111
11110
1111
10000
1111
10000000000000110