python百题大冲关-确定字符串是否是另一个的旋转

挑战介绍

实现一个算法来识别一个字符串 s2 是否是另一个字符串 s1 的旋转。旋转的解释如下:

如果将 s1 从某个位置断开,拆分成两个字符串(可能有一个为空字符串),再将这两个字符串调换顺序后拼接起来,能够得到 s2 ,那么说字符串 s2 是字符串 s1 的旋转。

本次挑战中,你需要在 rotation.py 文件中补充函数 is_substring 及函数 is_rotation 的空缺部分。

1is_substring 函数接受两个参数,s1,s2 用于指定传入的两个字符串; 2 3is_substring 函数由于判断传入的一个字符串是否是另一个的子字符串,它需要返回一个布尔值。 4 5is_rotation 函数接受两个参数,s1,s2 用于指定传入的两个字符串; 6 7is_rotation 函数需调用 is_substring 函数,但仅可调用一次; 8 9is_rotation 函数输出一个布尔值,即 True 或者 False。

你需要补充 is_substring 函数及 is_rotation 函数,使 is_rotation 函数可以识别传入的 s2 字符串是否是 s1 字符串的旋转。要求如下:

1如果 s2 字符串是 s1 字符串的旋转,则返回 True; 2如果 s2 字符串不是 s1 字符串的旋转,则返回 False; 3如果传入的字符串有一个是 None 或者空字符,但另外一个不是时,也返回 False。
1class Rotation(object): 2 3 def is_substring(self, s1, s2): 4 return s1 in s2 5 6 def is_rotation(self, s1, s2): 7 if s1 is None or s2 is None: 8 return False 9 if len(s1) != len(s2): 10 return False 11 return self.is_substring(s1, s2 + s2)

第一个函数判断子串通过 python 中的 in 通过in判断是否包含来判断子集 具体参考:python in 与 not in 用法及运算符

第二个函数需要判断s1和s2的旋转对称关系 先一个len()对比如果长度不同肯定不存在旋转关系直接返回False即可 最后通过调用第一个is_substring()函数 通过判断s1是否是s2+s2的子集来判断是否旋转 因为s2+s2则包含了s2的所有旋转字符串,等效于判断s1是否是s2+s2的子串

例如:

1s1 = helloworld 2s1 + s1 = helloworldhelloworld

即包含helloworld 也包含worldhello 结果一目了然

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

一篇文章带你了解JavaScript日期

日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

python百题大冲关-确定字符串是否是另一个的排列

挑战介绍实现一个算法来识别一个字符串str2是否是另一个字符串str1的排列。排列的解释如下:如果将str1的字符拆分开,重新排列后再拼接起来,能够得到str2,那么就说字符串str2是字符串str1的排列。本次挑战中,你需要在permutation.py文件中补充函数is_permutation的空缺部分