#include <iostream> using namespace std; const int N = 1000; char* FirstMaxSubString(const char *str1,char *str2) { int pos; //存放第一个最长子串的起始位置 int max = 0; //第一个最长子串的长度 int i,j; for(i=0;str1[i];i++) { for(j=0;str2[j];j++) { for(int k=0;str1[i+k]==str2[j+k] && (str1[i+k] || str2[i+k]);k++) if(k>max) { pos = j; max = k+1; } } } char *result = new char[max+1]; for(i=0;i<max;i++) result[i] = str2[pos++]; result[i] = '/0'; return result; //或者直接用下面的语句返回,好处是不用申请空间 /*str2[pos+max] = '/0'; return (char *)(str2+pos);*/ } int main() { char *str1 = new char[N]; char *str2 = new char[N]; cout<<"string_1:"; cin.getline(str1,N); cout<<"string_2:"; cin.getline(str2,N); //固定测试例 /* char *str1 = "abractyeyt"; char *str2 = "dgdsaeactyey"; */ cout<<"FirstMaxSubString:"<<FirstMaxSubString(str1,str2)<<endl; return 0; }