package general;

public class BinaryGap {
	public int binaryGap(int number) {
		while (number != 0 && (number & 1) == 0) {
			number >>= 1;
		}

		if (number == 0) {
			return 0;
		}

		int count = 0;
		int max = Integer.MIN_VALUE;
		while (number != 0) {
			if ((number & 1) == 0) {
				count++;
			} else {
				if (count > max) {
					max = count;
				}
				count = 0;
			}

			number >>= 1;
		}

		return count;
	}
}

@@ -11,16 +11,978 @@
 neral;%0A%0A
+/**%0A * A binary gap within a positive integer N is any maximal sequence of%0A * consecutive zeros that is surrounded by ones at both ends in the binary%0A * representation of N.%0A * %0A * For example, number 9 has binary representation 1001 and contains a binary%0A * gap of length 2. The number 529 has binary representation 1000010001 and%0A * contains two binary gaps: one of length 4 and one of length 3. The number 20%0A * has binary representation 10100 and contains one binary gap of length 1. The%0A * number 15 has binary representation 1111 and has no binary gaps.%0A * %0A * Write a function that, given a positive integer N, returns the length of its%0A * longest binary gap. The function should return 0 if N doesn't contain a%0A * binary gap. For example, given N = 1041 the function should return 5, because%0A * N has binary representation 10000010001 and so its longest binary gap is of%0A * length 5. Assume that: N is an integer within the range %5B1..2,147,483,647%5D.%0A */%0A
 public c

Improve comments