在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