Longest common substring: Difference between revisions
Content added Content deleted
(Added Algol 68) |
|||
Line 113: | Line 113: | ||
}</lang> |
}</lang> |
||
<lang aime>o_(longest("thisisatest", "testing123testing"), "\n");</lang> |
<lang aime>o_(longest("thisisatest", "testing123testing"), "\n");</lang> |
||
=={{header|ALGOL 68}}== |
|||
<lang algol68>BEGIN |
|||
# returns the longest common substring of s and t # |
|||
PROC longest common substring = ( STRING s, t )STRING: |
|||
BEGIN |
|||
STRING s1 = s[ @ 1 ]; # normalise bounds to 1 : ... # |
|||
STRING s2 = t[ @ 1 ]; |
|||
STRING result := ""; |
|||
INT result len := 0; |
|||
FOR i TO UPB s1 DO |
|||
FOR j TO UPB s2 DO |
|||
IF s1[ i ] = s2[ j ] THEN |
|||
INT k := 1; |
|||
WHILE INT ik = i + k; |
|||
INT jk = j + k; |
|||
IF ik > UPB s1 OR jk > UPB s2 |
|||
THEN FALSE |
|||
ELSE s1[ ik ] = s2[ jk ] |
|||
FI |
|||
DO |
|||
k +:= 1 |
|||
OD; |
|||
IF k > result len THEN |
|||
# found a longer substring # |
|||
result len := k; |
|||
result := s1[ i : ( i + k ) - 1 ] |
|||
FI |
|||
FI |
|||
OD |
|||
OD; |
|||
result |
|||
END # longest common substring # ; |
|||
# task test case # |
|||
print( ( longest common substring( "thisisatest", "testing123testing" ), newline ) ) |
|||
END</lang> |
|||
{{out}} |
|||
<pre> |
|||
test |
|||
</pre> |
|||
=={{header|AppleScript}}== |
=={{header|AppleScript}}== |