Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,33 @@
|
|||
on LCS(a, b)
|
||||
-- Identify the shorter string. The longest common substring won't be longer than it!
|
||||
set lengthA to a's length
|
||||
set lengthB to b's length
|
||||
if (lengthA < lengthB) then
|
||||
set {shorterString, shorterLength, longerString} to {a, lengthA, b}
|
||||
else
|
||||
set {shorterString, shorterLength, longerString} to {b, lengthB, a}
|
||||
end if
|
||||
|
||||
set longestMatches to {}
|
||||
set longestMatchLength to 0
|
||||
-- Find the longest matching substring starting at each character in the shorter string.
|
||||
repeat with i from 1 to shorterLength
|
||||
repeat with j from shorterLength to i by -1
|
||||
set thisSubstring to text i thru j of shorterString
|
||||
if (longerString contains thisSubstring) then
|
||||
-- Match found. If it's longer than the previously found match, or a new string of the same length, remember it.
|
||||
set matchLength to j - i + 1
|
||||
if (matchLength > longestMatchLength) then
|
||||
set longestMatches to {thisSubstring}
|
||||
set longestMatchLength to matchLength
|
||||
else if ((matchLength = longestMatchLength) and (thisSubstring is not in longestMatches)) then
|
||||
set end of longestMatches to thisSubstring
|
||||
end if
|
||||
-- Don't bother with the match's own substrings.
|
||||
exit repeat
|
||||
end if
|
||||
end repeat
|
||||
end repeat
|
||||
|
||||
return longestMatches
|
||||
end LCS
|
||||
Loading…
Add table
Add a link
Reference in a new issue