codility 之 BinaryGap

利用codility提升自己的编程能力。

题目:

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.

For example, number 9 has binary representation 1001 and contains a binary gap of length 2. The number 529 has binary representation 1000010001 and contains two binary gaps: one of length 4 and one of length 3. 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:

int solution(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.

For example, given N = 1041 the function should return 5, because N has binary representation 10000010001 and so its longest binary gap is of length 5.

Assume that:

  • N is an integer within the range [1..2,147,483,647].

Complexity:

  • expected worst-case time complexity is O(log(N));
  • expected worst-case space complexity is O(1).

解题要点:

  1. 利用二进制思想解题比较简单,一定要把题目要求搞清楚;
  2. 按照二进制位数遍历一次即可求出答案;//除以2相当于向右移位操作

参考答案:

// you can use includes, for example:
// #include <algorithm>

// you can write to stdout for debugging purposes, e.g.
// cout << "this is a debug message" << endl;

int solution(int N) {
    // write your code in C++14 (g++ 6.2.0)
    int NN = N;
    int gap = 0;
    int temp = 0;
    
    while (NN%2 == 0 && NN > 0)
    {
        NN /= 2;
    }
    
    while (NN > 0)
    {
        if (NN%2 == 0)
        {
            temp++;
        }
        else if (temp > gap)
        {
            gap = temp;
            temp = 0;
        }
        else
        {
            temp = 0;
        }
        
        NN /= 2;
    }
    
    return gap;
}

转载请注明原作者及原链接

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,178评论 0 10
  • 策略模式利用组合、委托等技术和思想,可以避免很多if条件语句 策略模式提供了开放-封闭原则,使代码更容易理解和拓展...
    bestvist阅读 3,529评论 1 4
  • 在同学群里有一个刚出校园的同学,就称呼她为s吧。s在一家企业做新媒体运营,不知是因为 什么原因常常需要加班,因为住...
    氧气姑娘666阅读 3,954评论 2 2
  • 这7天我去了发传单的兼职,变黑了,可恶。虽然没什么工作感悟,但是想想也该写个工作总结吧。 工作7天得出的最大最...
    白纸人与没头脑阅读 1,184评论 0 0
  • 1.BOS开发框架图1 2.BOS开发框架图2
    唐僧用飘柔阅读 5,596评论 0 1

友情链接更多精彩内容