[LeetCode]面试题 01.09. 字符串轮转

题目描述

难度 简单

字符串轮转。给定两个字符串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

猜你喜欢

转载自blog.csdn.net/u014132947/article/details/121313481