leetcode--796. 旋转字符串

  • 题目:给定两个字符串, s goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true
    s 的 旋转操作 就是将 s 最左边的字符移动到最右边。
    例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea'1

  • 示例:

# 示例 1
输入: s = "abcde", goal = "cdeab"
输出: true
# 示例 2
输入: s = "abcde", goal = "abced"
输出: false
  • 提示:
  1. 1 <= s.length, goal.length <= 100
  2. 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
  • 思路:

观察字符串发现只要sgoal的长度相等并且goal进行两次拼接后s总在这个结果中,即s经过移动操作能获得goal,是则返回True,否则返回False

  • 解法二:
class Solution:
    def rotateString(self, s, goal):
        return len(s) == len(goal) and s in goal + goal

  1. 来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/rotate-string ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值