博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最长公共子串(Longest common substring)
阅读量:6403 次
发布时间:2019-06-23

本文共 805 字,大约阅读时间需要 2 分钟。

问题描述:

    给定两个序列 X=<x1, x2, ..., xm>, Y<y1, y2, ..., yn>,求X和Y长度最长的公共子串。(子串中的字符要求连续)

 

    这道题和很像,也可以用动态规划定义。公式如下:

这里c[i,j]表示以Xi,Yj结尾的最长公共子串的长度。

程序实现:

int longestCommonSubstring(string x, string y){    int m = x.length();    int n = y.length();    vector< vector
> c(m+1, vector
(n+1)); for (int i = 0; i <= m; ++i) c[i][0] = 0; for (int j = 1; j <= n; ++j) c[0][j] = 0; int len = 0; for (int i = 1; i <= m; ++i) { for (int j = 1; j <= n; ++j) { if (x[i-1] == y[j-1]) { c[i][j] = c[i-1][j-1] + 1; if (c[i][j] > len) len = c[i][j]; else c[i][j] = 0; } } return len;}

reference:

 

转载于:https://www.cnblogs.com/gattaca/p/4725400.html

你可能感兴趣的文章
新加坡之旅
查看>>
IBM X3650 M3服务器上RAID配置实战
查看>>
Mysql DBA 高级运维学习之路-索引知识及创建索引的多种方法实战
查看>>
go语言与java nio通信,解析命令调用上下文拉起ffmpeg,并引入livego做的简单流媒体服务器...
查看>>
JavaScript面向对象轻松入门之多态(demo by ES5、ES6、TypeScript)
查看>>
mysql 存储过程创建
查看>>
【数据结构】线性表(一):顺序列表
查看>>
利用Mallet工具自动挖掘文本Topic
查看>>
Windows下oracle打补丁步骤
查看>>
Python教程(一)Python简介
查看>>
asp.net forms认证
查看>>
一帧图像的两种显示器建模方式
查看>>
Hadoop 公平调度器算法调度解析
查看>>
Linux Foundation(笔记)
查看>>
Java学习第二十五天
查看>>
vim配置
查看>>
ubuntu 把软件源修改为国内源和更新
查看>>
随机产生四则运算,导入导出文件
查看>>
位运算符
查看>>
winform自定义控件
查看>>