Chinaunix首页 | 论坛 | 博客
  • 博客访问: 185020
  • 博文数量: 36
  • 博客积分: 230
  • 博客等级: 二等列兵
  • 技术积分: 352
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-22 18:09
文章分类

全部博文(36)

文章存档

2013年(29)

2011年(5)

2010年(2)

我的朋友

分类: C/C++

2013-03-19 18:00:06

#include
#include
#include
 
 //求两个字符串的最大公共字符子串,如"abccade","dgcadde"的最大子串为"cad"
int GetCommon(char *s1, char *s2, char **r)
{
  int len1 = strlen(s1);
  int len2 = strlen(s2);
  int maxlen = 0; 
  int i = 0, j = 0;
  
 for (i = 0;  i < len1;  i++)
  { 
   for(j = 0; j < len2; j++)
  {
    if (s1[i] == s2[j])
   {
     int as = i, bs = j, count = 1;
     while((as + 1 < len1 )&& (bs + 1 < len2) && (s1[++as] ==s2[++bs]))
       count++;
     if (count > maxlen)
    {
       maxlen = count;
       *r = s1 + i;
     }
   }
  }  
 }  
 return  maxlen;
}
//--
int main()

    char a[] = "abccadefgh";
    char b[] = "dgcaddefgh";
    char *r;
    int len=0;
    len = GetCommon(a, b , &r);
    printf("Len is %d \n", len);
    printf("Result is %s \n", r);
   return 0; 
}
/*--  E  --*/
谢谢欣赏,欢迎指正。



阅读(5046) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

绯凉默2015-03-12 08:50:40

#include <stdio.h>
#include <string.h>
int GetCommon(char *s1,char *s2,char *r){
 int len1=strlen(s1);
 int len2=strlen(s2);
 int maxlen=0;
 int i,j,k;
 for(i=0;i<len1;i++){
  for(j=0;j<len2;j++){
   if(s1[i]==s2[j]){
    int as=i,bs=j,count=1;
    while((as+1<len1)&&(bs+1<len2)&&s1[++as]==s2[++bs]){
     count++;
 &nb