2

我想要一个检测字符串信誉的函数,特别是

重复(“abcabcabc”)ABC

重复(“aaaaaaa”)

重复(“ababab”) ab

重复(“abcd”)abcd

我正在考虑以递归方式执行此操作,但我很困惑

提前感谢您的帮助!

我正在尝试类似的东西

def repetition(r):
    if len(r) == 2:
       if r[0] == r[1]:
          return r[0]
    half = len(r) / 2
    repetition(r[:half])
    if r[:half] == r[half:]:
       return r[:half]
4

2 回答 2

1

可能有更好的方法来做到这一点,但我的第一个想法是:

def repetition(string):
    substring = ''
    for character in string:
        substring += character
        if len(string) % len(substring) == 0:
            if (len(string) / len(substring)) * substring == string:
                return substring
于 2013-11-04T23:21:05.777 回答
0

使用正则表达式:

import re
def repetitions(s):
    r = re.compile(r"(.+?)\1+")
    for match in r.finditer(s):
        if len(match.group()) != len(s): 
            return s

    return match.group(1)

测试:

repetitions("oblabla")
#output: "oblabla"

repetitions("blabla")
#output: "bla"
于 2013-11-04T23:27:24.777 回答