Longest Common Substring
求两个字符串中最长的公共部分的长度
长宽为对应两个字符串长度的二维数组dp
dp[i][j] = x 表示在s1[i]和s2[j]的位置上,已经有长度为x的公共字串
if s1[i] == s2[j]
转移方程为dp[i][j] = dp[i-1][j-1] + 1
注意当一边的下标为0时,dp[i][j] = 1
维护最大值
def lcs(s1,s2) dp = Array.new(s1.length){Array.new(s2.length,0)} s1.length.times do |i| s2.length.times do |j| if s1[i] == s2[j] if i == 0 or j == 0 dp[i][j] = 1 else dp[i][j] = dp[i-1][j-1] + 1 end maxlen = dp[i][j] if maxlen < dp[i][j] end end maxlen end