Here's the question you clicked on:

55 members online
  • 0 replying
  • 0 viewing

g152xx

  • 3 years ago

A binary gap within a positive integer N is any maximal sequence of consecutive zeros that is surrounded by ones at both ends in the binary representation of N. E.g.: The number 20 has binary representation 10100 and contains one binary gap of length 1. The number 15 has binary representation 1111 and has no binary gaps. Write a function: class Solution { public int binary_gap(int N); } that, given a positive integer N, returns the length of its longest binary gap. The function should return 0 if N doesn't contain a binary gap.

  • This Question is Closed
  1. Luckycutie1
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    this seems pretty hard of a problem

  2. asnaseer
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    just thinking aloud, I would approach it along the lines of: maxGap = 0 inGap = false while N > 0 if N % 2 == 1 if inGap AND gapLength > maxGap maxGap = gapLength inGap = true gapLength = 0 else: gapLength++ N = N >> 1 return maxGap

  3. luan.cestari
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 1

    I made this program in python (just create a file with ".py" in the end put the code in it and use "python nameOfFile.py number", where 'number' can be any integer): """ Get the Max Gap """ import sys import re if __name__ == '__main__': number = int(sys.argv[1]) binNumber = bin(number) strBinNumber = binNumber.__str__() strBinNumber = re.split("0b", strBinNumber)[1] maxGap = 0 counter = 0 firstFound = False for c in list(strBinNumber): if c == '1': firstFound = True if maxGap < counter: maxGap = counter counter = 0 else: if firstFound: counter+=1 print(strBinNumber) print(maxGap)

  4. g152xx
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    Thank you very much all of you, I can't give 2 medals but @asnasser I'll prepare one for you on the next one. Thanks much.

  5. asnaseer
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    yw :)

  6. atifmehar
    • 2 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    I made this program in Java public int maxBinaryGap(int number) { int maxGap = 0; boolean inGap = false; int gapLength = 0; while (number > 0) { if (number % 2 == 1) { if (inGap && gapLength > maxGap) { maxGap = gapLength; } inGap = true; gapLength = 0; } else { gapLength++; } number = number >> 1; } return maxGap; }

  7. Not the answer you are looking for?
    Search for more explanations.

    • Attachments:

Ask your own question

Sign Up
Find more explanations on OpenStudy
Privacy Policy