|
2019-05-17
def manacher(st): dst = "" for s in st: dst = dst + "#" + s dst = dst + "#" strlen = len(dst) R = [0]*strlen mr = 0 cc = 0 for i in range(1, strlen): if i < mr + cc: R[i] = R[2 * cc - i] j = R[i] + 1 while i+j < strlen and i - j >= 0 and dst[i + j] == dst[i - j]: R[i] = R[i] + 1 j = j + 1 if R[i] > mr: mr = R[i] cc = i return int(mr/2) if __name__ == '__main__': ret = manacher("ddccaaccbb") print(ret) ret = manacher("112321") print(ret)
编辑:航网科技 来源:腾讯云 本文版权归原作者所有 转载请注明出处
微信扫一扫咨询客服
全国免费服务热线
0755-36300002