문자열 찾기
시간 제한3초메모리 제한1024 MB
T의 부분 문자열 중 P와 같은 문자 일치 패턴을 가진 것의 개수를 구합니다. 길이는 최대 1,000,000입니다.
문제
영어 소문자로 이루어진 두 문자열 와 가 다음 조건을 모두 만족하면, 두 문자열은 사실상 같다고 한다.
- 와 의 길이가 같다.
- 모든 정수 , 에 대해 의 번째 글자와 번째 글자가 같으면, 의 번째 글자와 번째 글자도 같다.
- 모든 정수 , 에 대해 의 번째 글자와 번째 글자가 다르면, 의 번째 글자와 번째 글자도 다르다.
예를 들어 aba와 pqp는 사실상 같은 문자열이다. 하지만 abca와 abcb는 사실상 같은 문자열 쌍이 아니다.
문자열 와 가 주어질 때, 의 연속된 부분문자열 중 와 사실상 같은 것의 개수를 구하는 프로그램을 작성하라.
예를 들어 abababbab이고 pqp이면, 의 왼쪽부터 aba, bab, aba, bab, bab 다섯 개의 부분문자열이 와 사실상 같다.
다음 함수를 작성해야 한다.
int findP( char T [], char P [], int N, int M ):T는 길이N+1인 배열(문자열)이다.P는 길이M+1인 배열이다.T와P에는 각각 길이N과M인 영어 소문자 문자열이 저장되어 있다.T와P의 마지막 위치에는\0이 저장되어 있다.findP는T의 연속된 부분문자열 중P와 사실상 같은 부분문자열의 개수를 리턴해야 한다.
제한
, .