檢查一個數二進位制位是否交替出現 - C++ 中的 set 1


讓我們考慮一個整數 n。這個問題是檢查這個整數在其二進位制等價物中是否有交替模式。交替模式表示 101010……

方法如下:使用二進位制等價物檢查每個數字,如果兩個連續數字相同,返回 false,否則返回 true。

示例

#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";
}

輸出

Has alternating pattern

更新於:21-Oct-2019

227 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.