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

DaLongggggg 等级 765 0 0

挑战介绍

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

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

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

is_substring 函数接受两个参数,s1,s2 用于指定传入的两个字符串;

is_substring 函数由于判断传入的一个字符串是否是另一个的子字符串,它需要返回一个布尔值。

is_rotation 函数接受两个参数,s1,s2 用于指定传入的两个字符串;

is_rotation 函数需调用 is_substring 函数,但仅可调用一次;

is_rotation 函数输出一个布尔值,即 True 或者 False。

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

如果 s2 字符串是 s1 字符串的旋转,则返回 True;
如果 s2 字符串不是 s1 字符串的旋转,则返回 False;
如果传入的字符串有一个是 None 或者空字符,但另外一个不是时,也返回 False。
class Rotation(object):

    def is_substring(self, s1, s2):
        return s1 in s2

    def is_rotation(self, s1, s2):
        if s1 is None or s2 is None:
            return False
        if len(s1) != len(s2):
            return False
        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的子串

例如:

s1 = helloworld 
s1 + s1 = helloworldhelloworld  

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

收藏
评论区

相关推荐

浅析常用的Python Web的几大框架
在各种语言平台中,python涌现的web框架恐怕是最多的,是一个百花齐放的世界,各种microframework、framework不可胜数;猜想原因应该是在python中构造框架十分简单,使得轮子不断被发明。所 以在Python社区总有关于Python框架孰优孰劣的话题。下面就给大家介绍一下python的几大框架: Django Django 应该是最出
盘点一款Python二级考试模拟软件,带你轻松过关二级Python考试
大家好,我是Python进阶者。今天给大家讲的这个软件,主要是想让大家通过这个软件能将自己的Python基础进一步提高。一、前言相信有些小伙伴学习Python有一段时日,但是又不知道自己的Python基础学的如何,这个时候就需要一款神器来检测一下自己的Python基础了。要想检测自己的Python功力最直观的方法当然是做题了,至于做什么题了我们就不得而知了,
手把手教你4种方法用Python批量实现多Excel多Sheet合并
一、前言大家好,我是崔艳飞。前两天给大家分享了Python自动化文章:,而后在Python进阶交流群里边有读者遇到一个问题,他有很多个Excel表格,他需要对这些Excel文件进行合并。诚然,一个一个打开复制粘贴固然可行,但是该方法费时费力,还容易出错,几个文件还可以手动处理,要是几十个甚至上百个,你就抓瞎了,不过这问题对Python来说,so easy,一
ubuntu下caffe加入新的python层问题解决
1. https://blog.csdn.net/computerme/article/details/78645445 这个很全,感谢作者 2\. 问题:我遇到的   WITH_PYTHON_LAYER=1 make all -j&& make pycaffe 问题 CXX/LD -o python/caffe/_caffe.so
CentOS升级Python到2.7版本
查看python的版本 python -V Python 2.4.3 1.先安装GCC yum -y install gcc 2.下载Python-2.7.2 wget http://python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2 3.解压Python-2.7.2
Mac 升级Python 2.7 到 Python 3.7
MAC上默认内置安装了Python 2.7,但是Python 2.7到2020年就会停止维护了,并且有时候会出现依赖库的不兼容问题,那么怎么安装Python 3.X,并且将Python 3.X的版本设置为默认版本呢? ### 安装Python 3.7 有两种安装方式。 第一种是直接下载python3安装包安装: 1、下载地址如下:[https://w
Python 3 教程
Python 3 教程 =========== ![python3](https://www.runoob.com/wp-content/uploads/2014/05/python3.png) Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,
Python 为什么抛弃累赘的花括号,使用缩进来划分代码块?
大家好,这是“Python为什么”系列节目的文字稿(**文末有观看地址**)。 本期话题:Python 为什么使用缩进来划分代码块,而不像其它语言使用花括号 {} 或者 “end” 之类的语法? Python 的缩进是一个老生常谈的话题,经常有人会提及它,比如 Python 之父在上个月就恰好转发过一篇文章: ![](http://ww1.sinaim
Python向来以慢著称,为啥Instagram却唯独钟爱它?
PyCon 是全世界最大的以 Python 编程语言 为主题的技术大会,大会由 Python 社区组织,每年举办一次。在 Python 2017 上,Instagram 的工程师们带来了一个有关 Python 在 Instagram 的主题演讲,同时还分享了 Instagram 如何将整个项目运行环境升级到 Python 3 的故事。本文为该次演讲的内容摘要
Python源码在Win下和Linux下的编译,C++调用Python库绘制等高线
### 目录 前言 Python源码以及VS2017的准备 Python源码 VS2017 Windows下编译Python源码 编译命令 编译步骤 编译后的配置 添加注册表 Win10中编译Python源码小结 Windows中C++调用Python代码绘制等高线图 CMakeLists.txt文件如下: Python代码如下: CPP文件:
Python环境搭建—安利Python小白的Python和Pycharm安装详细教程
人生苦短,我用Python。众所周知,Python目前越来越火,学习Python的小伙伴也越来越多。最近看到群里的小伙伴经常碰到不会安装Python或者不知道去哪下载Python安装包等系列问题,为了方便大家学习Python,小编整理了一套Python和Pycharm安装详细教程,只要大家按照这个步骤来,就可以轻松的搞定Python和Pycharm的安装了。
Python的GUI编程(TK)
TK在大多数 Unix平台、Windows平台和Macintosh系统都是预装好的,TKinter 模块是 Tk GUI 套件的标准Python接口。可实现Python的GUI编程。 Tkinter模块("Tk 接口")是python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Maci
Python的隐藏功能
### 问题: _What are the lesser-known but useful features of the Python programming language?_ **Python编程语言鲜为人知但有用的功能是什么?** * _Try to limit answers to Python core._ **尝试将答案限于Pytho
Python解释器和IPython
简介 == 今天给大家介绍一下Python的一个功能非常强大的解释器IPython。虽然Python本身自带解释器,但是相对而言IPython的功能更加的强大。 Python解释器 ========= Python是自带解释器的,我们在命令行输入python即可进入python的解释器环境: $> pythonPython 2.7.15 (d
Python进阶丨如何创建你的第一个Python元类?
> **摘要:**通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。 Python元类设置类的行为和规则。元类有助于修改类的实例,并且相当复杂,是Python编程的高级功能之一。通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。本文介绍以下概念: * * 什么是Python元类?