문자열 str과 길이가 3인 하위 문자열 sub_str이 제공됩니다. 목표는 str에서 하위 시퀀스 sub_str의 개수를 찾는 것입니다. "act"의 예는 "cataract"에서 세 번입니다( cataract, cataract, cataract ).
예를 들어 이해합시다.
입력 - str=“정산” sub_str=”set”
출력 − 주어진 문자열에서 길이가 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[ current i to i
문자열을 str로, 하위 문자열을 sub_str로 가져옵니다.
함수 subset_occurrence(string str, int length, string sub_str)는 문자열을 가져와 str의 sub_str과 동일한 하위 시퀀스 수를 반환합니다.
for 루프를 사용하여 str을 탐색합니다. i=0에서 i<길이.
str[i]==sub_str[0]이 있으면 첫 번째 문자가 발견됩니다. j=i+1에서 j
str[j]==sub_str[1]이 있으면 두 번째 문자가 일치합니다. k=j+1에서 k
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