LeetCode #28:Implement Strstr(实现StrStr库函数)

题目描述

本题实际上就是实现字符串匹配的 KMP 算法。与暴力匹配算法不同,KMP 算法在匹配模式串时主串的指针不会回溯。实现 KMP 算法的关键是求 next 数组,笔者在生成 next 数组时采用了将前缀表整体左移、next[0] 赋值 -1 的策略(如模式串为aabaaf,生成的 next 数组为 {-1, 0, 1, 0, 1, 2}),这样若模式串在 j 处不匹配时就通过 j = next[j] 回溯。

阅读全文

LeetCode #151:Reverse Words In A String(颠倒字符串中的单词)

题目描述

本题是使用双指针(快慢指针法)的一道综合性问题。首先通过快慢指针对字符串中多余的空格进行清除,随后要对整个串进行一次反转操作,再要通过快慢指针来界定单词的边界,最后要对串中每一个单词再进行反转。

阅读全文