python - 在整个给定字符串中一致的重复子字符串模式——python
问题描述
def repeated(s):
repeatedStrs = []
i = len(s)/2 #get middle index of s
j = i = int(i)
# as long as index doesn't become 0, i.e., we are not comparing
# two single letters(the first letter of s and the last letter of s)
while i != 0:
#if the first i letters are equal to the last i letters
if s[0:i] == s[-i:len(s)]:
# adding the repeated string (only repeated in beginning
# and end) to a list so we can later confirm that this repeated
# string repeats consecutively throught the entire string
repeatedStrs.append(s[0:i])
i -= 1
count = 0
for repeatedStr in repeatedStrs:
lenOfRepStr = len(repeatedStr)
#ensuring that the repeated string fits perfectly into the string
if (lenOfRepStr > 0 and len(s) % lenOfRepStr == 0):
# len(s) - lenOfRepStr + 2 --> ensures that we don't go
# past the highest index since we compare the next lenOfRepStr
# indexes below; we move up by lenOfRepStr each pass
for q in range(0, len(s) - lenOfRepStr + 2, lenOfRepStr):
# compares adjacent lenOfRepStr letters to see if it
# is not equal to our repeated substring
if repeatedStr != s[q : (q+lenOfRepStr)]:
# breaks so we move onto the next choice of repeatedStr
# that was in our array of repeatedStrs
break
#this is our counter so we can ensure that for every adjacent
# pairs of the repeatedStr, we go through the
# entire string 's' the exact same times
count += 1
# seeing if we had the substring the exact same times that
# it can fit in the string 's'
if count == len(s)/lenOfRepStr:
return True
return False
这是我正在尝试的问题:https ://edabit.com/challenge/L2nw2N2YqZCboiaYM
我知道有更快更简单的方法来解决这个问题,但我想用这种方式解决它,因为我已经开始了
所以这是我经历的思考过程:我会检查是否有任何重复的子字符串出现在字符串 's' 的开头和结尾。我会继续寻找在开头和结尾出现的子串的其他选项。然后,一旦我构建了这些重复子字符串的各种选项的数组,这些选项在单词的开头和结尾重复,然后我开始检查这些重复的子字符串是否在整个字符串中连续出现,如果我找到这样的我返回真,否则,假。所以我试图弄清楚为什么这不适用于非常大的字符串。
这是不起作用的字符串(它应该返回 false,但它返回 true:
fqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmtbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlh
and this is the substring it tells me I get: fqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlh
apparently: the substring found: fqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlh
不等于
fqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmsbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlhfqmtbezecsinaikkjiehlkyqhmbytyvuyllxdlsggxqehktsyojzxnyhqvjepwzafzlsbufugkuabsnoypvlfuqeuxlh
解决方案
你有:
count = 0
for repeatedStr in repeatedStrs:
lenOfRepStr = len(repeatedStr)
...
应该
for repeatedStr in repeatedStrs:
count = 0
lenOfRepStr = len(repeatedStr)
...
推荐阅读
- java - 如何搜索 FTS3 表,以便搜索到的单词显示在列表顶部
- php - 找不到 php 命令,但 php70 正在工作
- observable - takeFirst 方法的替代方法是什么
- javascript - 在javascript中自动插入两个值的总和
- youtube-api - 偶尔会收到 YouTube iframe 播放器错误消息“发生错误。请稍后再试”
- node.js - 如何在 mongodb 中合并两个查询?
- javascript - 十进制逗号删除并将逗号添加到javascript中的大数字
- php - 如果 id 不匹配,PHP 从递归数组中删除项目
- python-3.x - 是否可以使用 gridsearchCV 和 sklearn 中的 make_pipeline 执行超参数调整
- java - 如何根据位图在两个字节之间交换特定位?