# Z algorithm # https://snuke.hatenablog.com/entry/2014/12/03/214243 # 「S と S[i:|S|-1] の最長共通接頭辞の長さ」を記録した配列 A を構築 def z_algo(S): if len(S)==0: return [] LEN=len(S) i=1 j=0 A=[0]*LEN A[0]=LEN while i