Computer >> Máy Tính >  >> Lập trình >> C ++

Kiểm tra xem một số có các bit trong mẫu thay thế hay không - Đặt 1 trong C ++

Giả sử chúng ta có một số nguyên n. Vấn đề là phải kiểm tra xem số nguyên này có các mẫu thay thế trong hệ nhị phân tương đương của nó hay không. Mẫu thay thế có nghĩa là 101010….

Cách tiếp cận như sau:kiểm tra từng chữ số bằng cách sử dụng hàm tương đương nhị phân và nếu hai chữ số liên tiếp giống nhau thì trả về false, nếu không thì trả về true.

Ví dụ

#include <iostream>
using namespace std;
bool hasAlternatePattern(unsigned int n) {
   int previous = n % 2;
   n = n/2;
   while (n > 0) {
      int current = n % 2;
      if (current == previous) // If current bit is same as previous
      return false;
      previous = current;
      n = n / 2;
   }
   return true;
}
int main() {
   unsigned int number = 42;
   if(hasAlternatePattern(number))
      cout << "Has alternating pattern";
   else
      cout << "Has no alternating pattern";
}

Đầu ra

Has alternating pattern