菜鸟扣代码第31天:leetcode第796题--旋转字符串

题目描述:

给定两个字符串, A 和 B。

A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A = ‘abcde’,在移动一次之后结果就是’bcdea’ 。如果在若干次旋转操作之后,A 能变成B,那么返回True。

示例 1:
输入: A = ‘abcde’, B = ‘cdeab’
输出: true

示例 2:
输入: A = ‘abcde’, B = ‘abced’
输出: false

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rotate-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

代码:

方法一:

class Solution(object):
    def rotateString(self, A, B):
        """
        :type A: str
        :type B: str
        :rtype: bool
        """
        if A=="" and B=="":
            return True
        for i in range(len(A)):
            if A==B:
                return True
            else:
                A = A[1:] + A[0]
        return False

方法二:

class Solution(object):
    def rotateString(self, A, B):
        """
        :type A: str
        :type B: str
        :rtype: bool
        """
        return len(A)==len(B) and B in A+A

思路:

方法一比较传统,就是A中第一个字符一个一个往后挪,最多挪动len(A)次。每挪动一次跟B进行比较,如果有相等的情况就返回True,否则返回False
方法二是我在网上看到的做法,思路很好。A无论旋转多少次,对应的序列在AA中一定能找到。

上一篇:小知识:如何判定crontab任务的执行频度


下一篇:CST—电磁及EMC仿真工具