此题来自今日头条2017秋招真题,题目叫String Shifting,其实就是求字符串中循环节个数

题目描述:

我们规定对一个字符串的shift操作如下:

shift(“ABCD”, 0) = “ABCD”

shift(“ABCD”, 1) = “BCDA”

shift(“ABCD”, 2) = “CDAB”

换言之, 我们把最左侧的N个字符剪切下来, 按序附加到了右侧。

给定一个长度为n的字符串,我们规定最多可以进行n次向左的循环shift操作。如果shift(string, x) = string (0<= x <n), 我们称其为一次匹配(match)。求在shift过程中出现匹配的次数。

输入

输入仅包括一个给定的字符串,只包含大小写字符。

样例输入

byebyebye

输出

输出仅包括一行,即所求的匹配次数。

样例输出

3

时间限制C/C++语言:1000MS其它语言:3000MS

内存限制C/C++语言:65536KB其它语言:589824KB

思路: 

大体思路就是从最小单位1依次从左往右截取字符串,判断截取的第1个字符串是否与第2,3,...,n个的相同长度的字符串是否相同如果有一个不相同直接break跳出循环,将最小单位加1继续执行上述循环。如果在某个最小单位内,上述循环全部通过,那么直接输出字符串长度除以最小单位的值。如果最小单位等于字符串的长度的一半时程序还没有输出,那么说明这个字符串只有1个循环节,就是本身,那么输出1就可以了。

答案: 

string = input()
l = len(string)
flag = 0
for i in range(l//2 + 1):if l % (i+1) == 0:r = l//(i+1)for j in range(1, r):if string[:(i+1)] != string[j*(i+1):(j+1)*(i+1)]:breakif j == r - 1:flag = 1if flag == 1:print(r)breakif i == l//2:print(1)

以上为我的愚见,如果哪个小伙伴有更好的方法,欢迎讨论呀!

python求字符串中循环节个数相关推荐

  1. 求字符串中汉字的个数

    一.分解字符串法 首先创建这个函数: /*将字符串分解*/ create function [dbo].[SplitChar] ( @str_One Nvarchar(100) ) returns @ ...

  2. python求字符串中出现的第一个最长重复子串(如banana中最长重复子串为ana)

    #字符串中出现的第一个最长重复子串 class commonsubstring():def maxlen(self,s1,s2): #最长公共子串的长度for i in range(min(len(s ...

  3. java字符串确定汉字_java中判断字符串中汉字的个数

    使用方法3与方法4时需要注意一些问题,代码中会有注释. 代码如下: package 包名; import java.util.ArrayList; import java.util.regex.Mat ...

  4. [转载] 用python统计中文字符数_使用Python统计字符串中各种字符的个数

    参考链接: Python中遍历字符串的单词 Python 统计字符串中各种字符出现的次数 一.提出问题 随机输入一段字符串,包括数字,英文,空格,其他字符,统计这些字符在其中出现的次数 二.难点提示思 ...

  5. python删除指定位置的字符串_python去除区域 python删除字符串中指定位置字符

    python删除字符串中指定位置字符 原程序是这样的: ser = serial.Serial("/dev/ttyAMA0", 9600) def main字符串的话,你可以把他当 ...

  6. 求二进制数中1的个数

    <<编程之美>>中有这么个题目:对于一个字节的无符号整形变量,求其二进制表达形式中"1"的个数. 基础算法:辗转相除法 辗转相除法是十进制采用的算法,该算法 ...

  7. 二进制拆弹实验详解_Population Count算法-求二进制数中1的个数

    所谓Population Count算法,即是指计算一个二进制数中1的个数的算法.具体来说,就是任意给定一个无符号整数N,求N的二进制表示中1的个数,比如N = 5(0101)时,返回2:N = 15 ...

  8. C语言编程>第十周 ⑦ 请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行……

    例题:请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回.一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始和结尾都没有空格. 请勿改 ...

  9. 汇编语言统计字符串中字符的个数

     因为作业里面有一个题,需要用汇编语言统计字符串中字符的个数,然而老师给的答案居然是错的.为什么呢,因为arm是字对齐的,答案居然每个字只比较一次就过去了,我去,每个字是有四个字节的,这能对吗,所以, ...

最新文章

  1. 【SpringMVC】概述
  2. MySQL 的“root”用户修改密码
  3. 虚荣的程序员--恶心,真的想吐
  4. 报名领奖|云栖大会,10月19-22日杭州不见不散!
  5. Scala函数的调用过程分析
  6. OpenCV简单的几何绘图的实例(附完整代码)
  7. 一步一步做一个linux文件传输软件(一)
  8. java程序怎么都不是一个_java运行的流程-怎么运行java程序编了一个程序不知道怎么运行郁闷啊后缀文件名是 爱问知识人...
  9. POCO C++ Libraies介绍及常见用法
  10. Javascript 中 Array.push 要比 Array.concat 快 945 倍
  11. Android开发技术周报 Issue#17
  12. Greeting Card 模拟
  13. string类和标准模板库
  14. Hadoop数据开发笔试题(一)
  15. 互联网网站的反爬虫策略浅析
  16. bzoj4094 luogu3097 最优挤奶
  17. 全面讲解光纤、光模块、光纤交换机、光模块组网设计与案例
  18. 迅雷9去右侧浏览器补丁
  19. 投资学实务-郑商所比赛-交易记录7
  20. 【LLM大模型】模型和指令微调方法

热门文章

  1. 开卷有益-读书的秘诀
  2. SpringSecurity系列 之 AuthenticationEntryPoint接口及其实现类的用法
  3. Cesium本地影像与地形服务发布
  4. 成都东软计算机科学与技术系,成都东软学院
  5. Python KeyError:0错误
  6. flow hive 新型蜂箱_这款神奇蜂箱大多数中国人都不会用到,但或许会有一点点相关的共鸣...
  7. 1.12 Xcode代码区的样式设置 [原创iOS开发-Xcode教程]
  8. SHELL加法运算及I++
  9. 剃须刀充电尾插坏了,怎么办?
  10. 大数据技术---Spark