面试题 01.09. 字符串轮转
【LetMeFly】面试题 01.09.字符串轮转
力扣题目链接:https://leetcode.cn/problems/string-rotation-lcci/
字符串轮转。给定两个字符串s1
和s2
,请编写代码检查s2
是否为s1
旋转而成(比如,waterbottle
是erbottlewat
旋转后的字符串)。
示例1:
输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True
示例2:
输入:s1 = "aa", s2 = "aba" 输出:False
提示:
- 字符串长度在[0, 100000]范围内。
说明:
- 你能只调用一次检查子串的方法吗?
方法一:倍增字符串
首先如果两个字符串不等长,那么直接返回false
否则就将一个字符串复制一份,abc变成abcabc,然后直接调用内置的find函数,查找第二个字符串是否是第一个字符串“倍增”后的子串
- 时间复杂度$O(n)$,其中$n$是第一个字符串的长度。(KMP 算法搜索子字符串的时间复杂度为 $O(n)$)
- 空间复杂度$O(n)$
AC代码
C++
1 |
|
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/127104669
面试题 01.09. 字符串轮转
https://blog.letmefly.xyz/2022/09/29/LeetCode 面试题 01.09. 字符串轮转/