vector getPi(string p) {
int m = p.size(), j = 0;
vector pi(m, 0);
for (int i = 1; i
while (j > 0 && p[i] != p[j])
j = pi[j - 1];
if (p[i] == p[j])
pi[i] = ++j;
}
return pi;
}
저게 접두 접미 같은거 찾는건데
다른 부분은 다 이해가 가는데
저 빨간색 부분만 이해가 안감 코드는 KMP 코드랑 비슷해서 외우기도 했고 KMP에서 j=pi[j-1]은 이해했는데
while문 조건도 다 이해가 가는데 왜 저렇게 pi[j-1]로 가면 되는지 모르겠음
댓글 0