C语言求两个字符串的最长公共子串

 更新时间:2015年02月25日 09:56:23   作者:Chance  
这篇文章主要介绍了C语言求两个字符串的最长公共子串,实例分析了C语言操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

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

#include "stdio.h"
#include "string.h"
#include "stdlib.h"

void getCommon(char str1[],char str2[],char * str3);
int stringLength(char * str);

void main(){
char str1[50];
char str2[50];
char str3[50];
gets(str1);
gets(str2);
getCommon(str1,str2,str3);
printf("%s\n",str3);
// printf("%d\n",stringLength(str2));
}
int stringLength(char * str){
int len = 0;
while(*str != '\0'){
len++;
str++;
}
return len;
}
void getCommon(char str1[],char str2[],char * str3){
int len1,len2;
int i,j,k;
int max=0;
int start = -1;

len1 = stringLength(str1);
len2 = stringLength(str2);
for(i = 0; i < len1; i++){
for(j = 0; j < len2; j++){
if(str1[i] == str2[j]){
for(k = 0; (str1[i+k] == str2[j+k] && str1[i+k] != '\0'); k++);
if(max < k){
max = k;
start = i;
}
}
}
}

if(start == -1){
str3[0] = '\0';;
}else{
memcpy(str3,&str1[start],max);
str3[max] = '\0';
}
}

希望本文所述对大家的C语言程序设计有所帮助。

相关文章

  • 距离详解Linux下的UDP方式通讯

    距离详解Linux下的UDP方式通讯

    这篇文章主要介绍了距离详解Linux下的UDP方式通讯,是深入Linux系统编程中的基础,需要的朋友可以参考下
    2015-10-10
  • C++实现中缀转后缀的示例详解

    C++实现中缀转后缀的示例详解

    这篇文章主要为大家详细介绍了如何利用C++实现中缀转后缀的问题,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • 利用C++实现双链表基本接口示例代码

    利用C++实现双链表基本接口示例代码

    双链表:在单链表的每个结点中,再设置一个指向其前驱结点的指针域,下面这篇文章主要给大家介绍了关于利用C++实现双链表基本接口的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • QT编写tcp通信工具(Client篇)

    QT编写tcp通信工具(Client篇)

    这篇文章主要介绍了QT编写tcp通信工具,适用于Client端,类似网上常见的网络调试工具,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C语言实例讲解选择语句的使用

    C语言实例讲解选择语句的使用

    选择语句是C语言中的重要组成部分,该部分也比较基础,本文将通过最通俗易懂的方式来为大家做出讲解。相信通过本文的学习,让大家一举拿下C语言选择语句的知识点
    2022-05-05
  • C++继承详细介绍

    C++继承详细介绍

    这篇文章主要介绍了C++继承详情,在我们进行开发的时候,我们经常会遇到抽象出来的类之间具有继承关系。一个类继承了另外一个类,被继承的类成为基类或父类,继承的类成为子类或派生类,下面文章的详细内容,需要的小伙伴可以参考一下
    2022-01-01
  • c语言中十六进制转二进制显示的实现方法

    c语言中十六进制转二进制显示的实现方法

    本篇文章对c语言中十六进制转二进制显示的实现方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++超详细讲解析构函数

    C++超详细讲解析构函数

    既然在创建对象时有构造函数(给成员初始化),那么在销毁对象时应该还有一个清除成员变量数据的操作咯,析构函数与构造函数功能相反,析构函数不是完成对象的销毁,局部对象销毁工作是由编译器完成的。而对象在销毁时会自动调用析构函数,完成类的一些资源清理工作
    2022-06-06
  • C语言实现十六进制转换为十进制的方法详解

    C语言实现十六进制转换为十进制的方法详解

    这篇文章主要为大家详细介绍了C语言实现十六进制转换为十进制的方法,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2022-11-11
  • 一波C语言字符数组实用技巧集锦

    一波C语言字符数组实用技巧集锦

    这篇文章主要介绍了一波C语言字符数组实用技巧集锦,包括许多字符的转换与提取等基本操作示例,需要的朋友可以参考下
    2016-04-04

最新评论