C++ 中給定字串中長度為三的子序列計數
給定字串 str 和長度為 3 的子字串 sub_str。目標是在 str 中查詢子字串 sub_str 的計數。例如,“act”在“cataract”中出現三次(cataract、cataract、cataract)。
讓我們透過示例來理解。
輸入 − str= “settlement” sub_str=”set”
輸出 − 給定字串中長度為三的子序列的計數為:5
解釋 − 子序列將是 −
1. set tlement, 2. se t t lement, 3. se ttlemen t, 4. s ettl e men t, 5. settlem e n t
輸入 − str= “knowledge” sub_str=”now”
輸出 − 給定字串中長度為三的子序列的計數為 − 1
解釋 − 子序列將是 − know ledge
下面程式中使用的方法如下
我們將使用 for 迴圈遍歷字串 str。如果任何 str[i]==sub_str[0],則將下一個字元 sub_str[1] 與 str[當前 i 到 i<length] 進行比較,如果在索引 j 處找到匹配,則將最後一個字元 sub_str[2] 與 str[當前 j 到 j<length] 進行比較。如果找到兩個匹配項,則遞增計數。
將字串作為 str,子字串作為 sub_str。
函式 subset_occurrence(string str, int length, string sub_str) 獲取字串並返回 str 中與 sub_str 相同的子序列的計數。
使用 for 迴圈遍歷 str。從 i=0 到 i<length。
如果任何 str[i]==sub_str[0],則找到第一個字元。透過 j=i+1 到 j<length 檢查下一個。
如果任何 str[j]==sub_str[1],則第二個字元匹配。透過 k=j+1 到 k<length 檢查下一個。
如果 str[k]==sub_str[2]。遞增計數。
返回計數作為結果。
示例
#include<iostream> using namespace std; int subset_occurrence(string str, int length, string sub_str){ int count = 0; for (int i=0; i<length; i++){ if (str[i]==sub_str[0]){ for (int j=i+1; j< length; j++){ if(str[j]==sub_str[1]){ for(int k=j+1; k<length; k++){ if(str[k]==sub_str[2]) { count++; } } } } } } return count; } int main(){ string str = "TUTpoinTUTpoinTUT"; int length = str.length(); string sub_str = "TUT"; cout<<"Count of subsequence of length three in a given string are: "<<subset_occurrence(str, length, sub_str); return 0; }
輸出
如果我們執行以上程式碼,它將生成以下輸出 -
Count of subsequence of length three in a given string are: 19