书上解法一复杂度应该是O(N*N*M)的时间,解法二的复杂度是O(N*M)的时间和O(N)的空间。
感觉自己的这个实现更好一些,O(N*M)的时间:
bool FindSub(char *a, char *b)
{
for(int i = 0; i<N; i++)
{
int j = 0;
while(a[(i+j)%N]==b[j])
{
if(j < M-1)
j++;
else
break;
}
if (j == M-1) return 1;
}
return 0;
}