首页 > 代码库 > [算法]两字符串的最长子串

[算法]两字符串的最长子串

abractyeyt,dgdsaeactyey的最长子串为actyey

const int maxSize = 100;char suffix[2][maxSize][maxSize];int max_sub(char* s1, int len1, char* s2, int len2){    for(int r = 0; r < 2; ++r){        char* s;        int len;        if(0 == r){            s = s1;            len = len1;        }        else{            s = s2;             len = len2;        }        for(int i = 0; i < len; ++i){            for(int j = i, k = 0; j <= len; ++j,++k){                suffix[r][i][k] = s[j];            }        }    }    int begin1, begin2, maxLen = 0;    for(int i = 0; i < len1; ++i){        for(int j = 0; j < len2; ++j){            int k = 0;            while(suffix[0][i][k] &&                     suffix[1][j][k] &&                     suffix[0][i][k] == suffix[1][j][k]){                ++k;            }            if(k > maxLen){                begin1 = i;                begin2 = j;                maxLen = k;            }        }    }    return maxLen;}