【字符串操作】 寻找两个字符串中的 最大公共子串
来源:互联网 发布:心脏支架 知乎 编辑:程序博客网 时间:2024/05/01 12:06
*题目描述:
请编写一个函数,求2个字符串的最长公共子串,n<20,字符长度不超过255.
例如有2个字符串为:
Name some local bus.
local bus is high speed I/O bus close to the processor.
则最长的公共子串为“local bus”。
*要求实现的函数:
n :输入的字符串个数,即数组中元素个数
【返回】动态分配的最长公共子串
【注意】只需完成该函数功能算法,中间不需要任何IO输入输出
*示例
输入: pIn[0] "what is local bus?"
pIn[1] "Name some local bus."
请编写一个函数,求2个字符串的最长公共子串,n<20,字符长度不超过255.
例如有2个字符串为:
Name some local bus.
local bus is high speed I/O bus close to the processor.
则最长的公共子串为“local bus”。
*要求实现的函数:
void find(char* sp, char*dp, char* max_str)【输入】pIn:输入的字符串
n :输入的字符串个数,即数组中元素个数
【返回】动态分配的最长公共子串
【注意】只需完成该函数功能算法,中间不需要任何IO输入输出
*示例
输入: pIn[0] "what is local bus?"
pIn[1] "Name some local bus."
实现代码如下:
#include<stdio.h>#include<string.h>void find(char* sp, char*dp, char* max_str){ int s_len = strlen(sp); int d_len = strlen(dp); int i=0, j=0,k=0; int max_len = -1, tmp_max_len=0; int pian_yi_wei = 0; for(i; i<s_len; i++) { for(j=0; j<d_len; j++) { if(sp[i] == dp[j]) { for(k=0; (sp[i+k] == dp[j+k] && sp[i+k]!='\0' && dp[j+k] != '\0'); k++); if(k > max_len) { max_len = k; pian_yi_wei = i; } } } } if(max_len == -1) { max_str[0] = '\0'; } else { memcpy(max_str, sp+pian_yi_wei, max_len); max_str[max_len] = '\0'; } return ;}int main(){ char str[30]={'\0'}; find("what is local bus?", "Name some local bus.", str); printf("max_str=%s\n", str); return 0;}
解题思路:
定位一个 游标 ,记录下当前的偏移量 ,也就是 上面 的pianyiwei,
假设k 为最大的长度, 再找到字符相同的时候,逐次 向后偏移,记录最大值, 如果 多个相同最大子串 则保留最开始的。
1 0
- 【字符串操作】 寻找两个字符串中的 最大公共子串
- 寻找最大公共子字符串
- 寻找最大公共子字符串
- 两个字符串寻找最长公共子串
- 查找两个字符串中的最大公共子串
- 两个字符串的最大公共子串
- 两个字符串的最大公共子串
- 两个字符串的最大公共子字符串
- 两个字符串的最大公共子字符串
- LCS算法寻找字符串最大公共子串
- 动态规划之寻找两个字符串最长公共子串
- 字符串操作:两个字符串的最长连续公共子串
- C语言实现寻找两个字符串中的最大公共字符串长度
- 两个字符串的最大公共子长度
- 返回两个字符串中的最大子串
- 两个或N个字符串最大公共子串算法
- 找出两个字符串的最大公共子串
- LCS求两个字符串的最大公共子串
- linux inifile.h
- 百度编辑器ueditor1.4.2-更改图片上传路径和图片读取路径
- Android应用如何监听自己是否被卸载及卸载反馈功能的实现(第二版)
- Linux下安装使用f.lux
- Android运行时ART简要介绍和学习计划
- 【字符串操作】 寻找两个字符串中的 最大公共子串
- Laravel框架学习记录一 框架基础
- 数据库中几个基本概念 主码 外码
- Html学习笔记2
- OC语法之KVC与KVO
- HttpSessionListener, HttpSessionAttributeListener的用法及简单实例
- Tomcat 启动错误!
- Ubuntu 12.04 LTS 中文输入法的安装
- HDU 2594 Simpsons’ Hidden Talents (KMP的F数组应用)