# 旋转词

# 题目:

给定两个字符串, sgoal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true

s旋转操作 就是将 s 最左边的字符移动到最右边。

  • 例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea'

示例 1:

输入: s = "abcde", goal = "cdeab"
输出: true
1
2

示例 2:

输入: s = "abcde", goal = "abced"
输出: false
1
2

# 题解

# 暴力解

每个位置开始尝试与 goal字符串匹配,越界的时候返回开头继续匹配。

复杂为:O(N^2)

# KMP应用

  1. s字符串复制一份,拼接到末尾,得到s1"abcdeabcde"
  2. s 的任何旋转词都是 s1 的子串
  3. 使用kmp算法,判断 goal 是否是 s1 的子串,如果是,则证明 s 能变成 goal ,那么返回 true

# 原题链接

796. 旋转字符串 (opens new window)

上次更新: 9/3/2023,