檢查二進位制字串是否在 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