void LCSUB(char *str1,int len1,char *str2,int len2) { if (NULL == str1 || NULL == str2 || len1 <= 0 || len2 <=0) { return; } int curlen,maxlen =0; int maxindex = -1; for (int i = 0; i < len1; ++i) { for (int j = 0; j < len2; ++j) { curlen = comlen(&str1[i],&str2[j]); if (curlen > maxlen) { maxlen = curlen; maxindex = i; } } } for (int i = 0; i < maxlen; ++i) { printf("%c ", str1[maxindex]); maxindex++; } }
void find_repeted_str(char *str) { int len = strlen(str); char **a = (char **)malloc(len * sizeof(char *)); int i; for(i = 0; i < len; i ++){ a[i] = &str[i]; //printf("a[%d] : %s\n", i, a[i]); } qsort(a, len, sizeof(char *), pstrcmp); //for(i = 0; i < len; i ++){ // printf("a[%d] : %s\n", i, a[i]); //} int maxlen = 0; int maxi; for(i = 0; i < len - 1; i ++){ int tmp = comlen(a[i], a[i + 1]); if(tmp > maxlen){ maxlen = tmp; maxi = i; } } printf("%.*s\n", maxlen, a[maxi]); free(a); }
int main() { char *s="Ask not what your country can do for you, but what you can do for your country"; char *a[MAX]; int maxlen=-1, i, j, maxi, maxj; int thislen=0; for(i=0; i<strlen(s); i++) { for(j=i+1; j<strlen(s); j++) { if((thislen=comlen(&s[i], &s[j]))>maxlen) { maxlen=thislen; maxi=i; maxj=j; } } } printf("%.*s\n", maxlen, s+maxi); for (i=0; i<strlen(s); i++) { a[i]=s+i; } qsort(a, strlen(s), sizeof(a[0]), pstrcmp); maxlen=-1; for(i=0; i<strlen(s)-1; i++) { if(comlen(a[i], a[i+1])>maxlen) { maxlen=comlen(a[i], a[i+1]); maxi=i; } } printf("%.*s\n", maxlen, a[maxi]); return 0; }