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