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

DaLongggggg 等级 527 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小应用 百度接口实现图片文字识别,并打包成安装包软件
本文给大家分享的主题是用百度的接口实现图片的文字识别。 1.环境和配置要求 整体是用Python实现,所需要使用的第三方库包括aip、PIL、keyboard、pyinstaller,如未安装,可在CMD中使用pip install BaiduAIP/pillow/keyboard/pyinstaller指令安装。 百度接口 打开https://
Python的环境搭建和下载
Python是一个跨平台、可移植的编程语言,因此可在windows、Linux和Mac OS X系统中安装使用。 安装完成后,你会得到Python解释器环境,可以通过终端输入python命令查看本地是否已经按照python以及python版本。这里有一点需要注意的是,如果没有将python的安装目录添加到环境变量中,会报错(python不是内部命令或外部命
python百题大冲关-确定字符串是否是另一个的排列
挑战介绍 实现一个算法来识别一个字符串 str2 是否是另一个字符串 str1 的排列。排列的解释如下: 如果将 str1 的字符拆分开,重新排列后再拼接起来,能够得到 str2 ,那么就说字符串 str2 是字符串 str1 的排列。 本次挑战中,你需要在 permutation.py 文件中补充函数 is_permutation 的空缺部分
python百题大冲关-确定字符串是否是另一个的旋转
挑战介绍 实现一个算法来识别一个字符串 s2 是否是另一个字符串 s1 的旋转。旋转的解释如下: 如果将 s1 从某个位置断开,拆分成两个字符串(可能有一个为空字符串),再将这两个字符串调换顺序后拼接起来,能够得到 s2 ,那么说字符串 s2 是字符串 s1 的旋转。 本次挑战中,你需要在 rotation.py 文件中补充函数 is_subst
python百题大冲关-压缩字符串
挑战介绍 实现一个算法来压缩一个字符串。压缩的要求如下: 需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。 压缩的格式是将连续相同字符替换为字符数字形式,例如 "AAABCCDDDD" 变为 "A3BC2D4"。 本次挑战中,你需要在 compress_str.py 文件中补充函数 compress 的空缺部分
知乎从Python转为Go,是不是代表Go比Python好?
众所周知,知乎早在几年前就将推荐系统从 Python 转为了 Go。于是乎,一部分人就说 Go 比 Python 好,Go 和 Python 两大社区的相关开发人员为此也争论过不少,似乎,谁也没完全说服谁。 知乎从Python转为Go,是不是代表Go比Python好?我认为,各有优点,谁也取代不了谁,会长期共存! “由 Python 语言转向 Go 语言
python百题大冲关-Fizz Buzz 经典问题
挑战介绍 给定一个整数 num,从 1 到 num 按照下面的规则返回每个数: 如果这个数被 3 整除,返回 'Fizz'。 如果这个数被 5 整除,返回 'Buzz'。 如果这个数能同时被 3 和 5 整除,返回 'FizzBuzz'。 如果这个数既不能被 3 也不能被 5 整除,返回这个数字的字符串格式。 挑战内容
Python编程基础(快速入门必看
Python编程基础一、Python语言基本语法 Python是一
python文件的第一行 #!/usr/bin/python3 是什么意思?
python文件的第一行代码通常在脚本语言的第一行会看到: !/usr/bin/env python或 !/usr/bin/python 首先要确定的一点是它不是注释。这两句话的目的都是指出你的python文件用什么可执行程序去运行它。1. !/usr/bin/python 是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释
全网最全python学习路线图,让学习不迷路
学习Python有一段时间了,最近也是在不断的整理Python相关的基础知识和学习一些新的知识,想来分享给大家。我刚开始接触Python时,和大多数初学者一样不知道从那里开始学习python,我也在网上找了许多python相关的资料来学习,但是资料多也不见得就好,因为不知道从哪里开始下手,走了许多弯路。后面我就整理了一套对初学者来说学习python能很快上手
怎么操作能使Python代码运行起来速度飞快?
Python是开发人员当中流行的编程语言之一。它应用广泛,无论是Web开发还是机器学习。Python大受欢迎的原因有很多,比如社区支持、出色的库、广泛用于机器学习和大数据以及简单的语法。尽管有这么多优点,Python还是有一个缺点:速度慢。作为一种解释性语言,Python的速度不如其他编程语言。不过,我们可以用几个技巧来克服这个问题。本文将分享几个Pytho
浅析常用的Python Web的几大框架
在各种语言平台中,python涌现的web框架恐怕是最多的,是一个百花齐放的世界,各种microframework、framework不可胜数;猜想原因应该是在python中构造框架十分简单,使得轮子不断被发明。所 以在Python社区总有关于Python框架孰优孰劣的话题。下面就给大家介绍一下python的几大框架: Django Django 应该是最出
手把手教你使用Flask搭建ES搜索引擎(预备篇)
/1 前言/ Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 那么如何实现 Elasticsearch和 Python 的对接成为我们所关心的问题了 (怎么什么都要和 Python 关联啊)。 /2 Python 交互/ 所以,Python 也就提供了可以对接 Elasti
盘点一款Python二级考试模拟软件,带你轻松过关二级Python考试
大家好,我是Python进阶者。今天给大家讲的这个软件,主要是想让大家通过这个软件能将自己的Python基础进一步提高。一、前言相信有些小伙伴学习Python有一段时日,但是又不知道自己的Python基础学的如何,这个时候就需要一款神器来检测一下自己的Python基础了。要想检测自己的Python功力最直观的方法当然是做题了,至于做什么题了我们就不得而知了,
手把手教你4种方法用Python批量实现多Excel多Sheet合并
一、前言大家好,我是崔艳飞。前两天给大家分享了Python自动化文章:,而后在Python进阶交流群里边有读者遇到一个问题,他有很多个Excel表格,他需要对这些Excel文件进行合并。诚然,一个一个打开复制粘贴固然可行,但是该方法费时费力,还容易出错,几个文件还可以手动处理,要是几十个甚至上百个,你就抓瞎了,不过这问题对Python来说,so easy,一