LeetCode 面试题 01.09. 字符串轮转

Posted Tisfy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 面试题 01.09. 字符串轮转相关的知识,希望对你有一定的参考价值。

【LetMeFly】面试题 01.09.字符串轮转

力扣题目链接:https://leetcode.cn/problems/string-rotation-lcci/

字符串轮转。给定两个字符串s1s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottleerbottlewat旋转后的字符串)。

示例1:

 输入:s1 = "waterbottle", s2 = "erbottlewat"
 输出:True

示例2:

 输入:s1 = "aa", s2 = "aba"
 输出:False

    提示:

    1. 字符串长度在[0, 100000]范围内。

    说明:

    1. 你能只调用一次检查子串的方法吗?

    方法一:倍增字符串

    首先如果两个字符串不等长,那么直接返回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. 字符串轮转的主要内容,如果未能解决你的问题,请参考以下文章

    面试题 01.09. 字符串轮转

    面试题 01.09. 字符串轮转(拼接)

    算法练习80.字符串轮转——奇淫技巧

    面试算法题 专题 —— 字符串

    Leetcode -面试题17.04.消失的数字 -189.轮转数组

    程序员面试题01