当前位置: 首页 > article >正文

算法刷题[比较两个字符串的最大公字符串(滑动窗口实现)]

题目:编程实现:找出两个字符串中最大公共子字符串,"abccade","dgcadde"的最大子串为"cad"

代码如下所示:

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/* 
   编程实现:找出两个字符串中最大公共子字符串,
   如"abccade","dgcadde"的最大子串为"cad" 
 */

/* 采用滑动窗口的算法实现 */
bool fun(char* str1, char* str2, char* ret)
{
	if ((NULL == str1) || (NULL == str2) || (NULL == ret)) return false;
	int maxlen=0, startindex = 0, retlen = 0;
	int len1 = strlen(str1), len2 = strlen(str2);
	for (int i = 0; i < len1; i++)          //str1字符串的遍历
	{
		for (int j = 0; j < len2; j++)      //str2字符串的遍历
		{
			retlen = 0;
			/* 如果首字母相等,进行滑动窗口的比较 */
			while ((i + retlen < len1) && (j + retlen < len2) && (str1[i + retlen] == str2[j + retlen]))
				retlen++;
			if (maxlen < retlen)      //记录相同字符串最长的长度、起始索引地址。
			{
				maxlen = retlen;
				startindex = i;
			}
		}
	}
	if (maxlen > 0)
	{
		strncpy(ret, &str1[startindex], maxlen);
		ret[maxlen] = '\0';
	}else
		ret[maxlen] = '\0';
	return true;
}


int main()
{
	char str1[] = "abdcaddec";
	char str2[] = "dgcadde";
	char ret[10];
	fun(str1, str2, ret);
	printf("str:%s\r\n", ret);
	return 0;
}

运行结果如下所示:


http://www.kler.cn/news/302288.html

相关文章:

  • 基于Boost库的搜索引擎开发实践
  • OpenFeign原理
  • docker-ce.repo源、kubernetes.repo源
  • 通过AI来创建一个_____html css网页制作成品 例子演示
  • 精准电商营销:基于京东商品详情API返回值的数据分析
  • 探索Python中的链式赋值、系列解包赋值与常量
  • Vue.js中computed的使用方法
  • Minio笔记-Centos搭建Minio
  • pgAdmin 4备份数据库失败,解决
  • 武汉墨家人俱乐部
  • 计算机毕业设计选题推荐-校园车辆管理系统-Java/Python项目实战(亮点:数据可视化分析、账号锁定)
  • 如何为 MongoDB 3.0.4 以下版本选择合适的 PyMongo 版本
  • 第10章 中断和动态时钟显示
  • 零基础5分钟上手亚马逊云科技-为网站服务器配置DNS域名
  • 基础的八股
  • Go语言现代Web开发03 关键字和包以及基本数据类型
  • word文档无损原样转pdf在windows平台使用python调用win32com使用pip安装pywin32
  • PHP精准投放高效转化微信代金券发券系统小程序源码
  • QuecPythonHeliosSDK 使用介绍
  • 借助ChatGPT撰写学术论文的10条规则
  • android studio 模拟器 loadlibrary failed with 126:找不到指定的模块
  • 数据处理与统计分析篇-day02-Linux进阶
  • jenkins 部署应用到多个环境
  • Git 使用教程:从入门到精通
  • Linux TCP服务器和客户端学习
  • GESP等级考试C++二级-ASCII码与字符
  • ZYNQ 7020 学习记录-2呼吸灯(模块化)
  • 【短距离通信】【WiFi】精讲WiFi P2P discovery阶段
  • Python世界:基于PESQ的自动化语音打分脚本实践
  • 【安当产品应用案例100集】016-如何实现人大金仓数据库的透明加密及访问控制