【算法】求两个字符串的最长子串

来源:互联网 发布:ubuntu golang 安装 编辑:程序博客网 时间:2024/05/22 16:06

这是一个非最优解,使用两个游标,逐次遍历两个字符串:

/*++++++++++++++++++++++++++++++求两个个字符串的公共最长字串+++++++++++++++++++++++++++++++*/bool GetMaxSubstr(const char* s1,const char* s2,char*sub){int pos1 = 0;int maxlen = 0;int len1 = strlen(s1),len2 = strlen(s2);for(int i = 0; i < len1; i++){for(int j = 0; j < len2; j++){int ii = i;int jj = j;while(jj < len2 && s1[ii] != s2[jj]) jj++;if(jj < len2){while(ii < len1 && jj < len2 && s1[ii] == s2[jj]){ii++;jj++;}if(maxlen < ii-i){maxlen = ii-i;pos1 = i;}}}}int pos2 = 0;while(pos2 < maxlen)sub[pos2++] = s1[pos1++];return maxlen > 0;}


这个问题还有效率更好的解法:

//to be add...


0 0
原创粉丝点击