I realize you said "efficiently", but if you ever miss that old Bubble Sort
feeling...
$str1:="This is my dog"
$str2:="My dog does not have fleas"
$str1:="The quick brown fox jumps over the lazy dog"
$str2:="The quick black fox leaps over the laziest dog"
ARRAY TEXT($aMatch;0)
getCommon ($str1;$str2;->$aMatch)
SORT ARRAY($aMatch;<)
// ----------------------------------------------------
// Method: getCommon - needs some optimization
// -
// INPUT1: Text
// INPUT2: Text
// INPUT3: Pointer - to text array
// OUTPUT:
// ----------------------------------------------------
$str1:=$1
$str2:=$2
If (Length($str1)>Length($str2))
$longer:=$str1
$shorter:=$str2
Else
$longer:=$str2
$shorter:=$str1
End if
$shortLen:=Length($shorter)
$longLen:=Length($longer)
$maxLen:=$shortLen*2+$longLen
$loop:=1
$buildText:=""
Repeat
ARRAY TEXT($aMatch;0)
For ($i;1;$loop)
$str1:=Substring($shorter;$shortLen-$i)
$str2:=Substring($longer;1;$loop+1)
For ($j;1;Length($str1))
If ($str1[[$j]]=$str2[[$j]])
$buildText:=$buildText+$str1[[$j]]
Else
APPEND TO ARRAY($aMatch;$buildText)
$buildText:=" "
End if
End for
End for
$loop:=$loop+1
Until ($loop>$maxLen)
COPY ARRAY($aMatch;$3->)
Keith - CDI
> On Aug 22, 2019, at 3:12 PM, Chip Scheide via 4D_Tech <[email protected]>
> wrote:
>
> Given 2 strings,
> I want to find, and return, the longest substring which is the same in
> both, regardless where in either string the longest substring starts.
>
> ex:
> 1- This is my dog
> 2- My dog does not have fleas
> longest common string is 'my dog'
>
> how to go about this, efficiently?
> I am assuming that there is regex black magic that would do this.
>
**********************************************************************
4D Internet Users Group (4D iNUG)
Archive: http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub: mailto:[email protected]
**********************************************************************