String Similarity

  • + 0 comments

    !/bin/python3

    import math import os import random import re import sys

    def stringSimilarity(s): n = len(s) z = [0] * n z[0] = n l, r = 0, 0

    for i in range(1, n):
        if i <= r:
            z[i] = min(r - i + 1, z[i - l])
        while i + z[i] < n and s[z[i]] == s[i + z[i]]:
            z[i] += 1
        if i + z[i] - 1 > r:
            l, r = i, i + z[i] - 1
    
    return sum(z)
    

    if name == 'main': fptr = open(os.environ['OUTPUT_PATH'], 'w')

    t = int(input().strip())
    
    for t_itr in range(t):
        s = input()
    
        result = stringSimilarity(s)
    
        fptr.write(str(result) + '\n')
    
    fptr.close()