Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 주어진 문자열에서 길이가 3인 하위 시퀀스 계산

<시간/>

문자열 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