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

更新於: 2020-12-01

169 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告