이 기사에서는 두 개의 문자열이 주어지고 첫 번째 문자열의 하위 문자열이 두 번째 문자열에서 몇 개나 찾을 수 있는지 알아야 합니다(정확한 하위 문자열은 여러 번 발생할 수 있음). 예를 들어
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 및 기타 언어와 같은 다른 언어로 동일한 프로그램을 작성할 수 있습니다. 이 기사가 도움이 되기를 바랍니다.