版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
最长公共子串:
算法为
- 如果俩个字母不相同,则值为0
- 如果俩个字母相同,值为左上角数字加1
伪代码:
if word_a[i] == word_b[j]:
cell[i][j] = cell[i-1][j-1] + 1
else:
cell[i][j] = 0
最长公共子序列:
算法为:
- 如果俩个字母不相同,就选择左方或者上方较大的填入
- 如果俩个字母相同,选择左上方的数字加1填入
伪代码:
if word_a[i] == word_b[j]:
cell[i][j] = cell[i-1][j-1] + 1
else:
cell[i][j] = max(cell[i-1][j], cell[i][j-1])