문자열 str이 주어진 문제에 따르면 주어진 문자열의 모든 하위 문자열을 계산해야 합니다. 부분 문자열은 크기가 기존 문자열보다 작거나 같을 수 있는 이미 존재하는 문자열의 일부인 문자열입니다.
예제를 통해 문제와 해결 방법을 이해합시다.
입력 - str ="wxyz";
출력 - 고유한 하위 문자열의 개수:10
설명 − 계산된 고유한 하위 문자열은 다음과 같습니다. −
wxyz, wxy, wx, w, xyz, xy, x, yz, y, z so their count is 10
입력 - str ="zzzz"
출력 - 고유한 하위 문자열의 개수는 다음과 같습니다. 4
설명 − 계산된 고유한 하위 문자열은 다음과 같습니다. −
zzzz, zzz, zz, z
아래 프로그램에서 사용하는 접근 방식은 다음과 같습니다.
-
문자열 str을 입력으로 사용합니다.
-
비어 있는 unordered_set "myset"을 선언합니다.
-
루프 i는 0에서 i가 문자열의 크기보다 작을 때까지 1단계 이동합니다.
-
새 문자열 공백 ""(비어 있음)을 선언합니다.
-
루프 j는 i에서 시작하여 j가 문자열의 크기보다 작아질 때까지 한 번에 한 단계씩 이동합니다.
-
str[j]
를 사용하여 각 단계의 공백 값을 연결합니다. -
myset에 공백을 삽입하세요.
-
-
str의 크기를 답으로 출력하십시오.
예
#include<iostream> #include<unordered_set> using namespace std; int main(){ string str = "aaaa"; unordered_set<string> myset; int i, j; for (i = 0; i < str.size(); ++i){ string space = ""; for (j = i; j < str.size(); ++j){ space = space + str[j]; myset.insert(space); } } cout <<"count of distinct substring is: " <<str.size(); return 0; }
출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다 -
count of distinct substring is: 4