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 次查看

开启你的 职业生涯

通过完成课程获得认证

开始
广告