classSolution{public:intfindIntegers(intnum){stringbits;for(;num;num>>=1)bits+=to_string(num&1);constintn=bits.length();vector<int>zero(n,1);vector<int>one(n,1);for(inti=1;i<n;++i){zero[i]=zero[i-1]+one[i-1];one[i]=zero[i-1];}intans=zero[n-1]+one[n-1];for(inti=n-2;i>=0;--i){// Numbers greater than num and <= 2^n - 1 are invalidif(bits[i]=='1'&&bits[i+1]=='1')break;if(bits[i]=='0'&&bits[i+1]=='0')ans-=one[i];}returnans;}};
classSolution{publicintfindIntegers(intnum){StringBuilderbits=newStringBuilder();for(;num>0;num>>=1)bits.append(num&1);finalintn=bits.length();int[]zero=newint[n];int[]one=newint[n];zero[0]=1;one[0]=1;for(inti=1;i<n;++i){zero[i]=zero[i-1]+one[i-1];one[i]=zero[i-1];}intans=zero[n-1]+one[n-1];for(inti=n-2;i>=0;--i){// Numbers greater than num and <= 2^n - 1 are invalidif(bits.charAt(i)=='1'&&bits.charAt(i+1)=='1')break;if(bits.charAt(i)=='0'&&bits.charAt(i+1)=='0')ans-=one[i];}returnans;}}