我想要一个检测字符串声誉的函数,特别是
重复( “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]
答案 0 :(得分: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
答案 1 :(得分: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"