檢查二進位制字串是否在 1 之間是 0


我們在此處將看到一個有趣的問題。我們必須檢查字串中在 1 之間是否為 0。如果不是,則該字串有效,否則無效。假設有三個字串 -

  • 10001111010
  • 00001111100
  • 01111101111

在這三個字串中,只有 B 有效,因為在 1 的流內沒有 0

要解決此問題,我們將找到字串中第一個 1 的索引,還要找到最後一個 1 的索引。然後,我們將檢查在這兩個索引之間是否有任何 0,如果有,則返回 false,否則返回 true(有效)

示例

 現場演示

#include <iostream>
using namespace std;
bool hasZeroInOnes(string str) {
   int first, last;
   for(first = 0; first < str.length(); first++){
      if(str[first] == '1')
      break;
   }
   for(last = str.length() - 1; last >= 0; last--){
      if(str[last] == '1')
      break;
   }
   for(int i = first+1; i < last; i++){
      if(str[i] == '0')
      return false;
   }
   return true;
}
int main() {
   string str = "00001111100";
   if(hasZeroInOnes(str)){
      cout << str << " is a valid string";
   } else {
      cout << str << " is NOT a valid string";
   }
}

輸出

00001111100 is a valid string

更新於:2019-09-25

128 瀏覽

開啟您的 職業生涯

完成本課程以獲得認證

開始
廣告