我将要编写一个函数,该函数将使我返回最短的一组字母,最终将创建给定的单词。
例如,单词 abkebabkebabkeb 由重复的 abkeb 单词创建。我想知道如何有效地分析输入单词,以使字符创建输入单词的时间最短。
O(n)解决方案。假定必须覆盖整个字符串。关键的观察结果是我们生成了模式并对其进行了测试,但是如果我们发现不匹配的内容,则必须包含已经测试过的整个字符串,因此我们不必重新观察那些字符。
def pattern(inputv): pattern_end =0 for j in range(pattern_end+1,len(inputv)): pattern_dex = j%(pattern_end+1) if(inputv[pattern_dex] != inputv[j]): pattern_end = j; continue if(j == len(inputv)-1): print pattern_end return inputv[0:pattern_end+1]; return inputv;