How to find the longest common string prefix in array of strings with Pascal

1 Answer

0 votes
program LongestCommonPrefix;

function LongestCommonPrefix(arr: array of string): string;
var
  i, j: Integer;
  prefix: string;
begin
  if Length(arr) = 0 then
    Exit('');

  prefix := arr[0]; // Assume the first string is the initial prefix

  for i := 1 to High(arr) do
  begin
    j := 1;
    // Compare characters of prefix and the current string
    while (j <= Length(prefix)) and (j <= Length(arr[i])) and (prefix[j] = arr[i][j]) do
      Inc(j);
    // Update the prefix to the common part
    prefix := Copy(prefix, 1, j - 1);
    if prefix = '' then
      Break; // Exit loop if there's no common prefix
  end;

  LongestCommonPrefix := prefix;
end;

var
  stringsArr: array of string;
begin
  // Initialize the dynamic array properly
  SetLength(stringsArr, 3); // Specify size of the array
  stringsArr[0] := 'cartography';
  stringsArr[1] := 'carburettor';
  stringsArr[2] := 'carbonating';

  WriteLn('Longest Common Prefix: ', LongestCommonPrefix(stringsArr));
end.



(*
run:

Longest Common Prefix: car

*)

 



answered Apr 25, 2025 by avibootz
...