最长连续公共子串算法

简介:
#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;
}

目录
相关文章
|
存储
二叉树的先序遍历和后序遍历的区别
先序遍历和后序遍历在遍历顺序、应用场景、实现方式以及复杂度等方面都存在一定的区别,在实际应用中需要根据具体问题的需求来选择合适的遍历方式。
375 5
|
12月前
|
机器学习/深度学习 传感器 边缘计算
基于深度学习的图像识别技术在自动驾驶中的应用####
随着人工智能技术的飞速发展,深度学习已成为推动自动驾驶技术突破的关键力量之一。本文深入探讨了深度学习算法,特别是卷积神经网络(CNN)在图像识别领域的创新应用,以及这些技术如何被集成到自动驾驶汽车的视觉系统中,实现对复杂道路环境的实时感知与理解,从而提升驾驶的安全性和效率。通过分析当前技术的最前沿进展、面临的挑战及未来趋势,本文旨在为读者提供一个全面而深入的视角,理解深度学习如何塑造自动驾驶的未来。 ####
495 1
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能的无限可能:技术前沿与应用实践
【10月更文挑战第23天】探索人工智能的无限可能:技术前沿与应用实践
|
Devops 关系型数据库 大数据
1000个开源免费的bash脚本合集
【10月更文挑战第4天】
335 0
|
存储 监控 安全
如何在iPhone设备中查看崩溃日志
如何在iPhone设备中查看崩溃日志
381 1
阿里云商标优选交易平台操作流程、手续费及常见问题解答
阿里云商标交易平台叫商标优先,有用30万+的海量商标资源,明码标价,不成功全额退款。关于商标优选操作流程、是否有手续费及常见问题解答
12398 2
阿里云商标优选交易平台操作流程、手续费及常见问题解答
|
编解码 定位技术 图形学
Maya风格化模型制作教程
风格化的模型制作起来比较困难,需要多个软件配合制作。下面艺术家CloéMolinari分享使用在Maya,Substance Painter和MT4创建一个风格化立体模型的过程,并介绍在SP和Marmoset中工作的重要性。
659 0
Maya风格化模型制作教程
|
机器学习/深度学习 自然语言处理 算法
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等
|
存储 测试技术 Linux
github 介绍
github 介绍