最长连续公共子串算法

简介:
#include <iostream>
#include <string.h>
using namespace std;

int  GetLCSLength(char* str1, char* str2)
{
	int length1 = strlen(str1); 
	int length2 = strlen(str2);
	int maxCommonLen = 0; // 公共子串的长度
	int endIndex = 0;     // 公共子串的最后位置

	// 申请内存
	int** table = new int*[length1];
	for(int i = 0; i < length1; i++)
		table[i] = new int[length2];

	// 初始化td
	for(int i = 0; i < length1; i++)
	{
		for(int j = 0; j < length2; j++)
		{
			table[i][j] = str1[i] == str2[j] ? 1 : 0;
		}
	}
	for(int i = 1; i < length1; i++)
	{
		for(int j = 1; j < length2; j++)
		{
			if(str1[i] == str2[j])// 左上角的元素值加1作为当前值
				table[i][j] = table[i-1][j-1] + 1;
			if(maxCommonLen < table[i][j])
			{
				endIndex = j;// 记录最长公共子串的最后一个字符的下标位置
				maxCommonLen = table[i][j];
			}
		}
	}
	cout << "最长公共子串:";
	for(int i = endIndex-maxCommonLen+1; i <= endIndex; i++)
		cout << str2[i];
	cout << endl;

	// 释放内存
	for(int i = 0; i < length1; i ++)
		delete[] table[i];
	delete[] table;

	return maxCommonLen;
}


int main()
{
	char* str1 = "21232523311324";
	char* str2 = "312123223445";
	char* str3 = "asdfeabcsdfa";
	char* str4 = "difabcdi";

	cout << GetLCSLength(str1, str2) << endl;
	cout << GetLCSLength(str3, str4) << endl;
}

目录
相关文章
水果软件flstudio设置成中文版本的操作步骤
再也用不着给编曲软件FL Studio安装汉化补丁了,今天FL Studio官方不声不响地悄悄更新了FL Studio 20中文版,但一些朋友装完Mac中文版后发现还是英文版,这是怎么回事呢?今天就俩讲一讲正确安装并设置FL中文版的方法。
2206 0
阿里云商标优选交易平台操作流程、手续费及常见问题解答
阿里云商标交易平台叫商标优先,有用30万+的海量商标资源,明码标价,不成功全额退款。关于商标优选操作流程、是否有手续费及常见问题解答
12277 2
阿里云商标优选交易平台操作流程、手续费及常见问题解答
|
存储 测试技术 Linux
github 介绍
github 介绍
|
机器学习/深度学习 自然语言处理 算法
Text to Image 文本生成图像定量评价指标分析笔记 Metric Value总结 IS、FID、R-prec等
Text to Image 文本生成图像定量评价指标分析笔记 Metric Value总结 IS、FID、R-prec等
Text to Image 文本生成图像定量评价指标分析笔记 Metric Value总结 IS、FID、R-prec等
|
机器学习/深度学习 人工智能 Java
避免踩坑!绝对有效的电子书下载方法
电子书下载是一个很多用户迫切需求,但是却一直没有得到很好解决的问题。 虽然网络上关于电子书下载的网站层出不穷,但是要么收费,要么费半天劲却找不到自己想要的书籍。
避免踩坑!绝对有效的电子书下载方法
|
安全
阿里云商标注册流程步骤
本文详细介绍阿里云商标注册流程步骤及阿里云商标注册价格
3937 0
阿里云商标注册流程步骤
|
定位技术
生活号平台运营规范
注册规范  1)申请入驻生活号时必须使用支付宝实名认证账号。 2)填写真实可信的身份资料(姓名、身份证号码、电话号码、企业名称等信息)。 3)上传真实有效并清晰可见的证件(身份证、营业执照、组织机构代码证)照片或扫描件。
1430 12
|
API 开发者 数据可视化
开放平台能为开发者带来什么价值?
2019杭州云栖大会大咖有约,由阿里云开放平台负责人圭多带来以“开放平台能为开发者带来什么价值?”为题的演讲。本文对阿里云的开放平台进行了详细的阐述,即对阿里云开放平台到底开放的是什么,开发者又被给予了哪些开发能力进行了详细的介绍,包括丰富完整的API产品体系,及如何让开发者更好享受技术红利?
|
SQL 弹性计算 分布式计算
DataWorks数据集成与开源Sqoop的对比
阿里巴巴技术专家张雅静为大家带来DataWorks数据集成与开源Sqoop的对比演讲。主要从介绍Sqoop开始谈起,接着详细介绍了DataWorks数据集成与开源Sqoop对比以及注意事项,然后着重说明了DataWorks数据集成并进行了实操演示,最后对全文进行了总结。 以下是精彩视频内容整理:
3712 0
DataWorks数据集成与开源Sqoop的对比
|
机器学习/深度学习 编解码 人工智能
面向视频的全新AI架构 —— 阿里云智能视觉技术全解
我们都知道,AI技术正在以可见的速度被应用于各行各业,然而绝大部分业务场景想应用AI技术,都需要算法工程师根据自身业务的标注数据,来进行单独训练,才能打磨出合适的AI模型。如此一来,如何以最低的门槛和成本,实现AI技术落地变成了行业急需解决的问题。
8865 0