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

C++에서 문자 X로 시작하고 문자 Y로 끝나는 부분 문자열 계산

<시간/>

문자열 str이 주어집니다. 목표는 문자 X와 동일한 시작 문자 및 문자 Y와 동일한 종료 문자를 갖는 str의 부분 문자열 수를 계산하는 것입니다. 예를 들어 입력이 "artact"이고 X='a' 및 Y='t'인 경우 하위 문자열은 "art", "act", "artact"입니다. 카운트는 3입니다.

예를 들어 이해합시다.

입력 − str="abcccdef" X='a' Y='c'

출력 −문자 X로 시작하고 Y로 끝나는 부분 문자열의 개수는 - 3입니다.

설명 − 하위 문자열은 다음과 같습니다.

“abc”, “abcc”, “abccc”. Total 3.

입력 − str="폭풍" X='' Y=''

출력 − 문자 X로 시작하고 Y로 끝나는 부분 문자열의 개수는 − 3

입니다.

설명 − 하위 문자열은 −

“t” , “tempest” , “t”. Total 3

아래 프로그램에서 사용한 접근 방식은 다음과 같습니다.

문자열을 탐색하고 X의 수를 증가시킵니다. 그런 다음 Y를 만나면 X로 시작하고 Y로 끝나는 문자열의 수에 X를 추가합니다.

  • 문자열 str을 가져옵니다. 길이를 str.size()로 계산합니다.

  • 함수 X_Y(문자열 str, int length, char X, char Y)는 문자열 str, 문자 X, Y를 취해 X로 시작하고 Y로 끝나는 str의 부분 문자열 개수를 반환합니다.

  • 초기 카운트를 0으로 합니다.

  • x_total을 str의 문자 X 개수로 사용합니다.

  • for 루프를 사용하여 str을 탐색합니다. i=0에서 i<길이.

    까지
  • str[i]==X이면 str(x_total++)에서 X의 개수를 증가시킵니다.

  • str[i]==Y이면 x_total을 계산에 추가합니다. X가 없으면 x_total은 0이고, 그렇지 않으면 Y는 X에서 시작하는 부분 문자열의 끝 문자입니다.

  • 원하는 결과로 카운트를 반환합니다.

예시

#include <bits/stdc++.h>
using namespace std;
int X_Y(string str, int length, char X, char Y){
   int count = 0;
   int x_total = 0;
   for (int i = 0; i < length; i++){
      if(str[i] == X){
         x_total++;
      }
      if (str[i] == Y){
         count = count + x_total;
      }
   }
   return count;
}
int main(){
   string str = "defaabbcchhkl";
   int length = str.size();
   char X = 'd';
   char Y = 'a';
   cout<<"Count of substrings that starts with character X and ends with character Y are: "<<X_Y(str, length, X, Y);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Count of substrings that starts with character X and ends with character Y are: 2