KMP 알고리즘의 완전한 이해를 처음부터 끝까지 [예약]

1 소개

① 문자열 일치 폭력적 시간 복잡도 O (N의 *를 M)은, 일단 매치 오류가 발생 S 시리즈 및 T 시리즈는 매치를 시작하기 위해 다시 시작점으로 하강한다.

INT ViolentMatch (CHAR * S, 숯 *의 T)을 
{ 
    INT sLen = strlen 함수 (S) 
    ; TLEN의 = 용의 strlen (T)을 int로 
    대 (INT I = 0; I는 sLen <; I는 ++)을 {// S 문자열 
        INT J = 0 ; 
        위해 (; J <TLEN, J ++) {// T 스트링 
            경우 (들 [내가 J +] [J]을 = (T)를!) 휴식 // 매치 실패 
        } 
        (J는 TLEN를 ==) IF I 반환 // 매치 완전히 
    } 
    -1을 리턴; 
}

노출 문제 : 실패하면, S 시리즈와 T 시리즈는 점 일치를 시작 발생 롤백해야합니다. 그냥, S 시리즈는 롤백하지 않는 문자열 롤백 T를 할 수있는 방법이 있습니까? KMP 응용 프로그램이 탄생했다.

O의 ②KMP 시간 복잡도 (N + M)

아이디어 : 경기가 실패 할 때마다, S 문자열을 롤백하지 않는 롤백 실패 할 수없는, T 다시 최대 접두어 문자열, 다음 배열의 도입에 떨어진다.

참조 : https://blog.csdn.net/wardseptember/article/details/78801491

 

추천

출처www.cnblogs.com/IIYMGF/p/11400053.html