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

C++를 사용하여 다른 문자열에 있는 한 문자열의 부분 문자열 수 찾기

<시간/>

이 기사에서는 두 개의 문자열이 주어지고 첫 번째 문자열의 하위 문자열이 두 번째 문자열에서 몇 개나 찾을 수 있는지 알아야 합니다(정확한 하위 문자열은 여러 번 발생할 수 있음). 예를 들어

Input : string1 = “fogl”
   string2 = “google”
Output : 6
Explanation : substrings of string1 present in string2 are [ “o”, “g”, “l”, “og”, “gl”,
“ogl” ].

Input : string1 = “ajva”
   string2 = “java”
Output : 5
Explanation : substrings of string1 present in string2 are [ “a”, “j”, “v”, “a”, “va” ].

해결책을 찾기 위한 접근 방식

다른 문자열에 있는 여러 하위 문자열을 찾는 이 문제를 어떻게 해결할 수 있는지 논의해 보겠습니다. 예를보고; 우리는 먼저 string1의 모든 부분 문자열을 보고 다른 문자열에 존재하는지 여부를 각 부분 문자열을 확인해야 한다는 것을 이해했습니다. 그렇다면 카운터를 증가시키고 전체 문자열을 조작한 후 카운터에 저장된 결과를 확인하십시오 .

위 접근 방식에 대한 C++ 코드

다음은 주어진 문제를 해결하기 위해 입력으로 사용할 수 있는 C++ 구문입니다 -

#include<iostream>
#include<string>
using namespace std;

int main() {
   string str1 = "ajva";
   string str2 = "java";
   int count = 0;// counter to store result
   int n = str1.length();

   for (int i = 0; i < n; i++) {

      string str3; // string3 is initialised to store all substrings of string1
      for (int j = i; j < n; j++) {
         str3 += str1[j];

         // checking whether substring present in another string or not
         if (str2.find(str3) != string::npos)
            count++;
      }
   }
   cout << "Number of substrings of one string present in other : "<< count;
   return 0;
}

출력

Number of substrings of one string present in other : 5

코드 이해

첫째, 이 코드에서는 두 문자열에 값을 주고 카운터를 0으로 초기화합니다. 전체 문자열을 살펴보고 str1에서 가능한 모든 하위 문자열을 찾아 str3에 저장합니다. 그런 다음 str2에 있는지 여부에 관계없이 str1의 각 부분 문자열을 확인합니다. 그렇다면 카운터를 1씩 증가시키고 마침내 카운터 변수에 저장된 출력을 인쇄합니다.

결론

이 기사에서는 다른 문자열에 있는 한 문자열의 부분 문자열 수를 찾는 간단한 솔루션을 찾습니다. C, Java, python 및 기타 언어와 같은 다른 언어로 동일한 프로그램을 작성할 수 있습니다. 이 기사가 도움이 되기를 바랍니다.