added some kmp algorithm