您的位置:首页 > 其它

找最大子串

2012-04-20 22:45 197 查看
参考了网上的代码,这个方法应该是最直接明了的,没有进行任何优化。

#include "stdafx.h"
#include<afx.h>
#include <iostream.h>
void findMaxSubstr(const char *str1 , const char *str2 , char *maxSubstr)
{
   ASSERT((str1!=NULL)&&(str2!=NULL));
   ASSERT(maxSubstr!=NULL);
   int maxPos=-1;//记录有没有相同的字符
   int maxLen=0;//相同的最大长度
   for(int i=0;i<strlen(str1);i++)//控制str1中字符
   {
       for(int j=0;j<strlen(str2);j++)//控制str2中的字符
	   {
		   if(str1[i]==str2[j])
		   {
               for(int k=1;(str1[i+k]==str2[j+k])&&(str1[i+k]!='\0');k++);//如果出现相同字符的话继续往下执行比较下一个字符直到不相同
			   //k为相同的个数
               if(k>maxLen)
			   {
				   maxPos=i;
				   maxLen=k;
			   }   			 
		   }
	   }
   }
   if(maxPos==-1)
   {
	   maxSubstr[0]='\0';
   } 
   else
   {
	   memcpy(maxSubstr,str1+maxPos,maxLen);
       maxSubstr[maxLen]='\0';
   }
}

int main(int argc, char* argv[])
{
	char substr[20];
    findMaxSubstr("12345678","92145645",substr);
	cout<<substr<<endl;
	return 0;	
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: