我们给了字符串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