## Codility binary gap solution C#

Find
longest sequence of zeros in binary representation of an integer.

**Solution:**

public int GetBinaryGap(int N)

{

string binaryValue = Convert.ToString(N, 2);

int longestBinaryGap = 0;

int binaryGapLenght = 0;

for (int i = 1; i < binaryValue.Length; i++)

{

if (binaryValue[i - 1] == '1' && binaryValue[i] == '0')

{

binaryGapLenght = 1;

}

else if (binaryValue[i - 1] == '0' && binaryValue[i] == '0')

{

binaryGapLenght++;

}

else if (binaryValue[i - 1] == '0' && binaryValue[i]
== '1')

{

longestBinaryGap = Math.Max(longestBinaryGap,
binaryGapLenght);

}

}

return longestBinaryGap;

}

By submitting this answer to codility I got 100% Marks.

Not sure how but this looks to be incorrect.

ReplyDeletepublic static int GetLongestSequence(int N)

{

string binary = Convert.ToString(N, 2);

Console.WriteLine("Method 2");

int longest = 0,current = 0;

for (int i = 0; i < binary.Length; i++)

{

if (binary[i] == '0')

{

if (longest == current) longest++;

current++;

}

else

{

current = 0;

}

}

return longest;

}

@Ravi mittal - I have tested this in codility and got 100%.

DeleteIt is correct if you ignore the last sequence of 0s, which wasn't mentioned in your post.. I checked the full question on Codality and it is the correct solution.

Delete