연속적인 1을 가져오려면 Bitwise Left Shift Operator를 사용하십시오. 다음은 십진수입니다.
i = (i & (i << 1));
I 값이 0이 될 때까지 위를 반복하고 변수를 사용하여 길이를 가져옵니다. 여기에서 계산하십시오.
while (i != 0) {
i = (i & (i << 1));
count++;
} 여기에서 가져온 예는 150입니다.
150에 대한 바이너리는 10010110입니다. 따라서 두 개의 연속적인 1이 있습니다.
예
using System;
class Demo {
private static int findConsecutive(int i) {
int count = 0;
while (i != 0) {
i = (i & (i < 1));
count++;
}
return count;
}
// Driver code
public static void Main() {
// Binary or 150 is 10010110
Console.WriteLine(findConsecutive(150));
}
} 출력
2