Re: common prefix?

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: common prefix?

Scott Fial
Perhaps I'm a bit late to the party, but here's my submission for
computing the longest common prefix found in a list of strings:

function longest_common_prefix(t)
   local t1, n, byte = t[1] or "", #t, string.byte
   for i = 1, #t1 do
     local b = byte(t1, i)
     for j = 2, n do
       if byte(t[j], i) ~= b then return t1:sub(1, i - 1) end
     end
   end
   return t1
end

NOTE: It returns t[1] when #t == 1.  If you'd prefer that it return an
empty string in that case, change line 2 to read:

   local t1, n, byte = #t > 1 and t[1] or "", #t, string.byte