public String sumBinaryNumbersBasedOnPowersOfTwo(String n1, String n2) {
        validateInput(n1, n2);

        int result = 0;
        int length = Math.max(n1.length(), n2.length());
        for (int i = 0; i < length; i++) {
            result += getValueAt(n1, i) * Math.pow(2, length - i - 1);
            result += getValueAt(n2, i) * Math.pow(2, length - i - 1);
        }
        return Integer.toBinaryString(result);
    }
To improve the execution time of the previous algorithm we are going to  use how an integer is
represented in binary. We are going to go through the binary number calculating the number
value and at the same time getting the result. This solution is based on the binary number
structure where 101 = 1*2^2 + 0*2^1 + 1*2^0 = 5. With this solution we are not going to use
Integer.parseInt(..) method to parse input data.

The complexity order of this solution is O(N) in time terms where N is the number of digits in
the binary number. Is the same complexity order we had, but the execution time is lower.

With this solution we are still using 'Integer.toBinaryString(result)' to get the binary
representation.
src/main/java/com/github/pedrovgs/problem3/SumBinaryNumbers.java