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

C++의 문자열에서 고유한 부분 문자열의 개수 세기

<시간/>

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