检查二进制字符串是否在 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 浏览

开启您的 职业生涯

完成本课程以获得认证

开始
广告
© . All rights reserved.