找出两字符串的最大公共字串

#include<cassert>
#include 
<iostream>
using namespace std;

char* GetSameSubstr(const char*  s1,const char* s2){
    
int len1=strlen(s1);
    
int len2=strlen(s2);
    
int cnt=0;
    
int maxlen=0;
    
int maxpos=0;
    
for(int i=0;i<len1;i++){
        
for(int j=0;j<len2;j++){
            
if(s2[j]==s1[i]){
                cnt
=1;
                
int index1=i;
                
int index2=j;
                
//注意循环条件
                while(index1+1<len1 /*&& index2+1<len2 */&& s1[++index1]==s2[++index2])
                    cnt
++;
                
if(cnt>maxlen){
                    maxlen
=cnt;
                    maxpos
=i;
                }

            }

        }

    }

    
char* address=new char[maxlen+1];
    strncpy(address,s1
+maxpos,maxlen);
    address[maxlen]
='\0';
    
return address;
}


int main()
{
    
char str1[]="abc12abc123";
    
char str2[]="abc123";
    
char* tmp=GetSameSubstr(str1,str2);
    cout
<<tmp<<endl;
    delete[] tmp;
//释放内存
    system("pause");
    
return 0;
}

posted on 2011-06-11 16:54 Hsssssss 阅读(130) 评论(0)  编辑 收藏 引用 所属分类: C++代码


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

留言簿

文章分类

文章档案

收藏夹

搜索

最新评论