力扣(LeetCode)旋转字符串 个人题解

给定两个字符串, A 和 B

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

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

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

注意:

  • A 和 B 长度不超过 100

 

 

正常的做法比较清晰了,可以一次移位一个去比较,全部移位一遍后没有匹配成功则返回false

在评论区看到一个神奇做法,将A复制一份,首尾相连,即A+A,然后判断B是否在A+A里面就可以了

非常巧妙而且快捷。

代码如下:

class Solution:
    def rotateString(self, A: str, B: str) -> bool:
        return len(A) == len(B) and B in (A+A)

 

posted @ 2019-03-09 21:14  AXiangCoding  阅读(282)  评论(0)    收藏  举报
编辑推荐:
· 从 Redis 客户端超时到 .NET 线程池挑战
· C23和C++26的#embed嵌入资源指南
· 「EF Core」框架是如何识别实体类的属性和主键的
· 独立开发,这条路可行吗?
· 我在厂里搞 wine 的日子
阅读排行:
· 他没买 iPad,而是花了半年时间,为所有“穷学生”写了个笔记神器
· Visual Studio 现已支持新的、更简洁的解决方案文件(slnx)格式
· 只需一行命令,Win11秒变Linux开发主机!
· 从 Redis 客户端超时到 .NET 线程池挑战:饥饿、窃取与阻塞的全景解析
· 2025年中总结:我想我克服公众演讲的恐惧了,一个社恐分子突破自我的故事
点击右上角即可分享
微信分享提示