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