题目描述
难度 简单
字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。
示例1:
输入:s1 = "waterbottle", s2 = "erbottlewat"
输出:True
示例2:
输入:s1 = "aa", s2 = "aba"
输出:False
提示:
字符串长度在[0, 100000]范围内。
说明:
你能只调用一次检查子串的方法吗?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/string-rotation-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
解法一:%运算符具有轮转性质,穷举比对拼接的字符与s2是否相等,时间复杂度O(N^2+M)。
解法二:巧妙的思路,判断s2+s2是否包含s1。因为s1不管如何轮转都可以在s2+s2组合的串内中找到,假如s1在s2+s2组合串范围内找不到,则表示s1是错误的字符串。
代码实现
解法一:
执行结果:通过
执行用时:903 ms, 在所有 Java 提交中击败了5.14% 的用户
内存消耗:39 MB, 在所有 Java 提交中击败了5.19% 的用户
通过测试用例:30 / 30
2021年 11月 14日 星期日 05:31:26 CST
解法二:
执行结果:通过
执行用时:0 ms, 在所有 Java 提交中击败了100.00% 的用户
内存消耗:37.8 MB, 在所有 Java 提交中击败了95.49% 的用户
通过测试用例:30 / 30
2021年 11月 14日 星期日 05:47:35 CST