Generare un algoritmo per trovare la sottostringa più lunga di due stringhe.
def longest_common_substring(str1, str2):
    n1 = len(str1)
    n2 = len(str2)

    LCSuff = [[0 for i in range(n2+1)] for j in range(n1+1)]

    res = "" # Per memorizzare il risultato
    lenght = 0 # Per memorizzare la lunghezza del risultato

    # Costruzione di LCSuff[][] dal basso verso l'alto
    for i in range(n1+1):
        for j in range(n2+1):
            if (i == 0 or j == 0):
                LCSuff[i][j] = 0
            elif (str1[i-1] == str2[j-1]):
                LCSuff[i][j] = LCSuff[i-1][j-1] + 1
                if (lenght < LCSuff[i][j]):
                    lenght = LCSuff[i][j]
                    res = str1[i-lenght: i]
            else:
                LCSuff[i][j] = 0

    return res