题目描述:
给定两个字符串, 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中一定能找到。