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

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;
} 

 

你可能感兴趣的:(字符串)