# 旋转词
# 题目:
给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。
s 的 旋转操作 就是将 s 最左边的字符移动到最右边。
- 例如, 若
s = 'abcde',在旋转一次之后结果就是'bcdea'。
示例 1:
输入: s = "abcde", goal = "cdeab"
输出: true
1
2
2
示例 2:
输入: s = "abcde", goal = "abced"
输出: false
1
2
2
# 题解
# 暴力解
每个位置开始尝试与 goal字符串匹配,越界的时候返回开头继续匹配。
复杂为:O(N^2)
# KMP应用
- 将
s字符串复制一份,拼接到末尾,得到s1:"abcdeabcde" s的任何旋转词都是s1的子串- 使用
kmp算法,判断goal是否是s1的子串,如果是,则证明s能变成goal,那么返回true