转载地址:http://blog.csdn.net/shandianling/article/details/7913818

这与求两个字符串的公共子序列要区分开,见http://blog.csdn.net/shandianling/article/details/7888050<br/>
但 求你方法与求公共子序列类似,而且要简单一点。<br/>
方法:动态规划.
循环遍历两个字符串,查找当s1[i]==s2[k] 的情况 然后保存在c[i][k]中,c[i][k]=c[i-1][k-1]+1 最后我们会得到类似以下矩阵


OK,结果可以看出来了。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//求公共子串(连续),注意跟求公共子序列有区别
int lcstr( const char* s1,const char* s2)
{//clen保存公共子串的最大长度,s1_Mindex保存 s1公共子串的最后一个元素的位置int len1,len2,i,k,cLen=1,s1_Mindex=0;int **c;if(s1==NULL || s2==NULL) return -1;len1=strlen(s1);len2=strlen(s2);if(len1< 1 || len2 < 1) return -1;c=malloc(sizeof(int*)*len1);for(i=0;i<len1;i++){c[i]=(int *)malloc(len2*sizeof(int));memset(c[i],0,len2*sizeof(int));}/**********init end!*************/for(i=0;i<len1;i++){for(k=0;k<len2;k++){if(i==0 || k==0){if(s1[i]==s2[k]) c[i][k]=1;else c[i][k]=0;}else{if (s1[i] == s2[k]){c[i][k] = c[i - 1][k - 1] + 1;if (cLen < c[i][k]){cLen = c[i][k];s1_Mindex = i;}}}}}//*************//// printf the one of lcs 只是其中一条,如果存在多条。for(i=0;i<cLen;i++){printf("%c",*(s1+s1_Mindex-cLen+1+i));}/*****free array*************/for(i=0;i<len1;i++)free(c[i]);free(c);return cLen;}
int main(void) {char a[]="abcgooglecba";char b[]="cbagoogleABVC";printf("\nlcstr = %d\n",lcstr(a,b));return 0;
}

求两个字符串的最长的连续公共子串相关推荐

  1. php两个字符串公共,C++_C语言求两个字符串的最长公共子串,本文实例讲述了C语言求两个字 - phpStudy...

    C语言求两个字符串的最长公共子串 本文实例讲述了C语言求两个字符串的最长公共子串的方法.分享给大家供大家参考.具体实现方法如下: #include "stdio.h" #inclu ...

  2. 动态规划:求两个字符串的最长公共子序列

    问题描述:求两个字符串的最长公共子序列. 思路:使用动态规划的思想,将问题分解为小的子问题. 假设两个字符串序列分别为:X{x0, x1, x2,......, xm}, Y{y0, y1, y2,. ...

  3. 求两个字符串的最长公共子串

    给出两个字符串,求出两个字符串的最长公共子串 #include<iostream> #include<string> using namespace std; int main ...

  4. 求两个字符串的最长公共字串(连续)

    题目描述: 输入两个字符串,求其的最长的公共的字串,这与最长公共子序列不一样 输出两字符串的最长公共字串 思路一: 从字符串A开始遍历,同时遍历字符串A,找到第一个与当前字符串A相同的字符,此时记下当 ...

  5. python字符串中最长的连续升序子串_Leetcode刷题练Python无重复字符的最长子串

    这是一道字符串处理算法的题目,在日常编程中,处理字符串是常见任务.该题目会涉及到一个概念"滑动窗口". 一.题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度 ...

  6. 【java】求两个字符串的最长公共子串

    这个是华为OJ上的一道题目.首先,如果我们用java写代码,华为OJ有以下三条规则需遵守,否则编译无法通过或者用例无法通过,规则如下: (1)一定不可以有包名: (2)主类名只能为Main: (3)不 ...

  7. 两个字符串的最长公共子序列长度_程序员编程算法,解决文本相似度问题的最长公共子序列算法!...

    在前面我讲解了如何通过最长公共子串来求解两个文本的相似度问题,但它有一定缺陷,举个例子,看下面的两个字符串 我爱吃小青菜和各种鲜水果. 我很爱吃青菜与各样水果. 上面两个字符串,如果通过计算子串来求相 ...

  8. 【算法】【递归与动态规划模块】两个字符串的最长公共子数组

    目录 前言 问题介绍 解决方案 代码编写 java语言版本 c语言版本 c++语言版本 思考感悟 写在最后 前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批 ...

  9. 两个字符串的最长公共子序列长度_输出两个字符串的最长公共子串和最长公共子序列...

    输出两个字符串的最长公共子串和最长公共子序列.求解两个字符串的最长公共子串和最长公共子序列在方法上很接近,都是动态规划.只不过在递推方程上有一些不一样. 求两个字符串的最长公共子串 #include ...

  10. python求最长公共子串_Python-求解两个字符串的最长公共子序列

    一.问题描述 给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence).比如字符串1:BDCABA:字符串2:ABCBDAB.则这两个字符串的最长公共子序列长 ...

最新文章

  1. 吴恩达灵魂发问:AI社区最亟待解决的问题是什么?
  2. 唠唠SE的集合-04——ArrayList
  3. 北斗导航 | 卫星导航基础知识(卫星轨道及卫星在轨运动)
  4. 【OpenSSL】OpenSSL之MD5
  5. oracle awr报告提取,oracle AWR报告提取分析
  6. 杨森翔的书法【斗方】
  7. 当选院士!兰州大学教授斩获美国该领域最高荣誉!
  8. SpringBoot2.0 基础案例(04):定时任务和异步任务的使用方式
  9. 分布式事务Seata的AT模式下两阶段提交原理
  10. html调用eps,eps输出没有属性
  11. 使用CSS实现国际象棋棋盘
  12. 中仪股份管道机器人_中仪股份 X5-HT 管道检测机器人
  13. 阿里云消息服务(MNS)简单介绍
  14. vux组件库更换主题颜色的方法
  15. Auto.JS简介与教程
  16. Java P1460 健康的荷斯坦奶牛 Healthy Holsteins
  17. 【python】百度关键词排名查询实现
  18. Yapi使用(快速入门)
  19. 什么是珍珠翡翠白玉汤
  20. Unity3d中角色的动画脚本的编写

热门文章

  1. c语言指针的应用实验报告6,C语言实验六实验报告——指针.doc
  2. python设计模式pdf_精通python设计模式豆瓣-精通python设计模式第二版电子书pdf下载-精品下载...
  3. python 解析模块脚本_Python HTMLParser模块解析html获取url实例
  4. 打开浏览器标签页并修改内容_解决因Bing导致Chrome打开标签页光标失焦的问题...
  5. 网络疯传IT男女标配图
  6. 使用ASP.NET Atlas ItemView控件显示集合中的单个数据
  7. ckeditor4.x操作之在页面中引入(一)
  8. Hadoop2.7.4 HA centos6.8
  9. 在Hive中使用Avro
  10. MCSE 2012 R2之工作文件夹Word Folders(2)