检查二进制字符串是否在 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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程语言
C++
C#
MongoDB
MySQL
Javascript
PHP