在 C++ 中找到給定字串中所有“1(0+)1”的模式
假設一個字串有類似 1(0+)1 的模式。其中 (0+) 表示連續出現且非空的 1。我們必須找到所有模式。這些模式可以重疊。該字串不一定是二進位制字串。它只能包含數字和小寫字元。假設該字串類似 1101001,那麼就有兩種這樣的模式。101 和 1001。
為了解決這個問題,我們將遵循以下步驟:
遍歷字串中的所有字元 c
當 c 為 1 時,我們遍歷直到元素變成 0
當 0 的流結束時,我們將檢查下一個字元是不是 1
在到達字串末尾前一直重複這些步驟。
示例
#include<iostream>
using namespace std;
int countBinPattern(string main_str) {
char last_char = main_str[0];
int i = 1, counter = 0;
while (i < main_str.size()) {
if (main_str[i] == '0' && last_char == '1') {
while (main_str[i] == '0')
i++;
if (main_str[i] == '1')
counter++;
}
last_char = main_str[i];
i++;
}
return counter;
}
int main() {
string str = "10010110000101";
cout << "Number of substrings of pattern 1(0+)1 is: " << countBinPattern(str);
}輸出
Number of substrings of pattern 1(0+)1 is: 4
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP