19 lines
526 B
Ruby
19 lines
526 B
Ruby
def longest_common_substring(a,b)
|
|
lengths = Array.new(a.length){Array.new(b.length, 0)}
|
|
greatestLength = 0
|
|
output = ""
|
|
a.each_char.with_index do |x,i|
|
|
b.each_char.with_index do |y,j|
|
|
next if x != y
|
|
lengths[i][j] = (i.zero? || j.zero?) ? 1 : lengths[i-1][j-1] + 1
|
|
if lengths[i][j] > greatestLength
|
|
greatestLength = lengths[i][j]
|
|
output = a[i - greatestLength + 1, greatestLength]
|
|
end
|
|
end
|
|
end
|
|
output
|
|
end
|
|
|
|
p longest_common_substring("thisisatest", "testing123testing")
|