判断一个字符串是否可以旋转成另外一个字符串
- leetcode796题 旋转字符串
- 题目描述
- 解题思路
- 代码演示
- 往期经典算法
leetcode796题 旋转字符串
原题链接:
https://leetcode.cn/problems/rotate-string/
题目描述
给定两个字符串, 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
解题思路
我们首先把goal 字符串变成下面形式
String str = goal + goal;
就可以判断如果 str 包含 s 那么s 就可以旋转成goal
怎么理解呢:
就是 String ans = s + s;
s 无论如何旋转得到的新字符串一定是ans 的字串.
代码演示
public boolean rotateString(String s, String goal) {if(s == null || goal == null || s.length() != goal.length()){return false;}String str = goal + goal;return str.indexOf(s) != -1; }
往期经典算法
leetcode52.N 皇后 II
leetcode51. N 皇后
leetcode95–不同的二叉搜索树 II
leetcode96–不同的二叉搜索树
动态规划.背包问题–填满背包的最大价格