LeetCode 面试题 01.09. 字符串轮转
Posted Tisfy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 面试题 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 ) O(n) O(n),其中 n n n是第一个字符串的长度。(KMP 算法搜索子字符串的时间复杂度为 O ( n ) O(n) O(n))
- 空间复杂度 O ( n ) O(n) O(n)
AC代码
C++
class Solution
public:
bool isFlipedString(string& s1, string& s2)
if (s1.size() != s2.size())
return false;
return (s1 + s1).find(s2) != string::npos;
;
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/127104669
以上是关于LeetCode 面试题 01.09. 字符串轮转的主要内容,如果未能解决你的问题,请参考以下文章