-
题目:给定两个字符串,
s
和goal
。如果在若干次旋转操作之后,s
能变成goal
,那么返回true
。
s
的 旋转操作 就是将s
最左边的字符移动到最右边。
例如, 若s = 'abcde'
,在旋转一次之后结果就是'bcdea'
。1 -
示例:
# 示例 1
输入: s = "abcde", goal = "cdeab"
输出: true
# 示例 2
输入: s = "abcde", goal = "abced"
输出: false
- 提示:
- 1 <= s.length, goal.length <= 100
- s 和 goal 由小写英文字母组成
- 思路:
首先观察
s
字符串,将s
做旋转操作s
字符串的长度次数,就能获得s
原字符串
定义一个存储移动次数的值与一个while
循环,若这个值大于等于s
字符串的长度则跳出循环
移动次数加一累加,然后依次将除s
做旋转操作,提前跳出循环的条件设为若s
做了旋转操作之后与goal
字符串相等就返回True
,否则返回False
- 解法一:
class Solution:
def rotateString(self, s, goal):
cnt = 0
while cnt < len(s):
cnt += 1
s = s[1:] + s[0]
if s == goal:
return True
return False
- 思路:
观察字符串发现只要
s
与goal
的长度相等并且goal
进行两次拼接后s
总在这个结果中,即s
经过移动操作能获得goal
,是则返回True
,否则返回False
- 解法二:
class Solution:
def rotateString(self, s, goal):
return len(s) == len(goal) and s in goal + goal
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rotate-string ↩︎