def longest(s1,s2): """Prende in ingresso due stringhe. Restituisce una lista con le sottostringhe piu' lunghe contenute in entrambe.""" # contiene la piu' lunga sottostringa # trovata fino ad ora max=[""] for i1 in range(len(s1)): for i2 in range(len(s2)): # contiene la sottostringa comune # a partire da s1[i1] e s2[i2] current="" #print i1,i2,s1[i1],s2[i2] i3=0 while s1[i1+i3] == s2[i2+i3]: current+=s1[i1+i3] #print "i1=%s,i2=%s,i3=%d,s=%s" % (i1,i2,i3,current) i3+=1 if i2+i3 >= len(s2) or i1+i3 >= len(s1): break # verifico se la sottostringa e' # maggiore della massima trovata if len(current) > len(max[0]): max=[current] elif len(current) == len(max[0]): max.append(current) print max return max