题目

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

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

例如, 若 s = ‘abcde’,在旋转一次之后结果就是’bcdea’ 。

示例 1:

输入: s = “abcde”, goal = “cdeab”
输出: true

示例 2:

输入: s = “abcde”, goal = “abced”
输出: false

提示:

1 <= s.length, goal.length <= 100
s 和 goal 由小写英文字母组成

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rotate-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

首先,796. 旋转字符串 - 图1796. 旋转字符串 - 图2必须长度一样,才可能将s经过旋转得到796. 旋转字符串 - 图3

其次,输入字符串长度在796. 旋转字符串 - 图4以内,因此可以枚举出796. 旋转字符串 - 图5旋转的所有可能,看有没有和796. 旋转字符串 - 图6相同的。

代码

  1. class Solution {
  2. public boolean rotateString(String s, String goal) {
  3. int n = s.length();
  4. if (n != goal.length()) {
  5. return false;
  6. }
  7. String ss = s + s;
  8. for (int i = 0; i < n; i++) {
  9. if (ss.substring(i, i + n).equals(goal)) {
  10. return true;
  11. }
  12. }
  13. return false;
  14. }
  15. }