zl程序教程

您现在的位置是:首页 >  其它

当前栏目

字符串轮转

字符串
2023-09-11 14:15:15 时间

字符串轮转

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

示例1:

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

示例2:

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

示例代码1:

class Solution(object):
    def isFlipedString(self, s1, s2):
        """
        :type s1: str
        :type s2: str
        :rtype: bool
        """
        if len(s1) != len(s2):
            return False
        s3 = s1 + s1
        return s2 in s3


# s1 = "waterbottle"
# s2 = "erbottlewat"
s1 = "aa"
s2 = "aba"
a = Solution()
b = a.isFlipedString(s1, s2)
print(b)

示例代码2:

class Solution(object):
    def isFlipedString(self, s1, s2):
        """
        :type s1: str
        :type s2: str
        :rtype: bool
        """
        return len(s1) == len(s2) and s2 in s1 * 2


# s1 = "waterbottle"
# s2 = "erbottlewat"
s1 = "aa"
s2 = "aba"
a = Solution()
b = a.isFlipedString(s1, s2)
print(b)

运行效果:

思路解析:

方法一:
倍增s2,若长度相同的情况下,s1一定为s3的一个子串
复杂度分析

  • 时间复杂度:O(N)
  • 空间复杂度:O(N)