How to merge two strings based on shared suffix and prefix in Pascal

1 Answer

0 votes
program MergeOnOverlapProgram;

function MergeOnOverlap(a, b: string): string;
var
  lenA, lenB, maxPossibleOverlapLen, overlap, i: Integer;
  match: Boolean;
begin
  lenA := Length(a);
  lenB := Length(b);

  if lenA < lenB then
    maxPossibleOverlapLen := lenA
  else
    maxPossibleOverlapLen := lenB;

  overlap := 0;

  { try longest overlap first }
  for i := maxPossibleOverlapLen downto 1 do
  begin
    match := Copy(a, lenA - i + 1, i) = Copy(b, 1, i);
    if match then
    begin
      overlap := i;
      Break;
    end;
  end;

  { result = a + (b minus overlap) }
  MergeOnOverlap := a + Copy(b, overlap + 1, lenB - overlap);
end;

var
  s: string;
begin
  s := MergeOnOverlap(
         'fantasy time travel technology',
         'technology extraterrestrial life'
       );
  WriteLn(s);
end.



(*
run:

fantasy time travel technology extraterrestrial life

*)

 



answered Jan 23 by avibootz
edited Jan 23 by avibootz
...