力扣——二进制间距(c++)——004

题目链接
请添加图片描述

思路:

  1. 输入的数据为十进制,先将其转为二进制倒序数组(倒序还是正序都不影响)
  2. 再找数组中相邻1最大的距离
class Solution {
public:
    int number[30];
    int length = 0;
    void change(int num){
        while (num / 2) {
            number[length] = num % 2;
            length++;
            num = num / 2;
        }
        number[length] = num;
        length++;
    }
    int binaryGap(int n) {
        change(n);
        int d=0;
        for(int i=length-1;i>=0;i--){
            if(number[i]==1){
                int j=i-1;
                for(;j>=0;j--){
                    if(number[j]==1){
                        if((i-j)>d){
                            d=i-j;
                        }
                        break;
                    }
                }
                i=j+1;
            }
        }
        return d;
    }
};
···


版权声明:本文为m0_52229137原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。