在C ++中计算给定字符串中长度为3的子序列

我们给了字符串str和一个长度为3的子字符串sub_str。目标是找到str中子序列sub_str的计数。示例“行为”是“白内障”(白内障,白内障,白内障)的三次。

让我们通过示例来理解。

输入-str =“结算” sub_str =“设置”

输出-给定字符串中长度为3的子序列的计数为: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 =“知识” sub_str =“现在”

输出-给定字符串中长度为3的子序列的计数为-1

说明-子序列将是-知识壁架

以下程序中使用的方法如下

我们将使用for循环遍历字符串str。如果有任何str [i] == sub_str [0],则将下一个字符sub_str [1]与str [当前i比较到i <length],如果在索引j处找到匹配项,则将最后一个字符sub_str [2]与str [当前进行比较j至j <length]。如果找到两个匹配项,则递增计数。

  • 将string作为str,将substring作为sub_str。

  • 函数subset_occurrence(字符串str,整数长度,字符串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