检查一个字符串中的字符串,其中字符串的末尾循环到开头

时间:2015-05-16 18:23:59

标签: python python-2.7

所以,假设我有一个字符串,' string ',我知道字符串的长度,' length '。我想检查一个长度相同的单词“ checkfor ”是否在 string 中。 我知道要这样做我可以使用:

if(string[0:length-1]==checkfor):
   Return True

但我也想检查字符串是否位置错误,例如让 checkfor = iwantpie length = 8。如果 string 是'iwantpie'或'wantpiei'或'antpieiw'等,我想返回True。 我知道我可以使用如下声明:

if((string[0:length-1] or string[length-1]+string[0:length-2] or string[length-2:length-1]+string[0:length-3] or ... or string[length-length:length-1])==checkfor):
   Return True

其中......表示重复相同的模式。这就像使字符串循环并检查子字符串。 显然,随着长度的增加,这变得很麻烦。 有没有办法巩固可能与for循环?

写这个我找到了一个可能的解决方案,但它可能不是最好的,如果有一个for循环解决方案,我想不管怎么看。

2 个答案:

答案 0 :(得分:1)

这样的东西
>>> def checkOccurence(string, checkfor):
...     for i in range(len(string)):
...             if  string[i:]+string[:i] == checkfor:
...                     return True
...     return False
... 

<强>测试

>>> string = "antpieiw"
>>> checkfor = "iwantpie"
>>> checkOccurence(string, checkfor)
True

>>> checkfor = "iwantpie234"
>>> checkOccurenct(string, checkfor)
False

答案 1 :(得分:0)

make string = string + string ,然后检查 checkfor 作为子字符串。解析已经回答的子串有很多问题,所以我会让你找到那些。