Sha256: 7357dc125c63496fc4e6ebb574cfe3875288c20b4a642491c7b23f0590402d67

Contents?: true

Size: 715 Bytes

Versions: 159

Compression:

Stored size: 715 Bytes

Contents

# Return the longest common prefix between two strings.
def longest_common_prefix(strings)
  p = nil
  strings.map{|s|s.size}.min.times do |c|
    if strings.map{|s|s[c]}.uniq.size == 1
      p = c
    else
      break
    end
  end

  strings.first[0..p] unless p.nil?
end


def longest_common_subsequence(s1, s2)
 
  num = Array.new(s1.size) { Array.new(s2.size) }
  len, ans = 0
 
  s1.chars.each_with_index do |l1, i|
    s2.chars.each_with_index do |l2, j|
      unless l1==l2
        num[i][j]=0
      else
        if (i==0 || j==0)
          num[i][j] = 1
        else
          num[i][j] = 1 + num[i-1][j-1]
        end
        len = ans = num[i][j] if num[i][j] > len
      end
    end
  end

  ans
 
end

Version data entries

159 entries across 159 versions & 1 rubygems

Version Path
epitools-0.5.103 lib/epitools/lcs.rb
epitools-0.5.100 lib/epitools/lcs.rb
epitools-0.5.99 lib/epitools/lcs.rb
epitools-0.5.98 lib/epitools/lcs.rb
epitools-0.5.97 lib/epitools/lcs.rb
epitools-0.5.96 lib/epitools/lcs.rb
epitools-0.5.95 lib/epitools/lcs.rb
epitools-0.5.94 lib/epitools/lcs.rb
epitools-0.5.93 lib/epitools/lcs.rb
epitools-0.5.92 lib/epitools/lcs.rb
epitools-0.5.91 lib/epitools/lcs.rb
epitools-0.5.90 lib/epitools/lcs.rb
epitools-0.5.89 lib/epitools/lcs.rb
epitools-0.5.88 lib/epitools/lcs.rb
epitools-0.5.87 lib/epitools/lcs.rb
epitools-0.5.86 lib/epitools/lcs.rb
epitools-0.5.85 lib/epitools/lcs.rb
epitools-0.5.84 lib/epitools/lcs.rb
epitools-0.5.83 lib/epitools/lcs.rb
epitools-0.5.82 lib/epitools/lcs.rb