c 언어: 두 문자열의 최대 공통 하위 문자열 찾기

3621 단어 c 언어
제목: 프로그래밍은 두 문자열의 최대 공통 문자열을 찾는 예시를 실현한다.'aocdfe'와'pmcdfa'의 최대 공통 문자열은'cdf'사고방식이다. 두 문자열을 입력하고 짧은 문자열의 길이에 따라 비교 횟수를 결정한다.한 번에 하나의 문자를 비교하고 짧은 문자열의 첫 번째 문자부터 긴 문자열의 모든 문자와 비교하며 같은 문자가 나타나면 두 문자열은 각각 다른 문자가 나타날 때까지 다음 문자를 비교한다.(동시에 짧은 문자열의 길이를 초과해서는 안 된다. 그렇지 않으면 알 수 없는 결과가 나타날 수 있음을 주의해야 한다) 두 개의 수조를 a, b로 정의한다.a는 같은 문자를 가져오는데, a의 길이가 b의 길이보다 크면 a를 b에게 복사합니다.
코드는 다음과 같습니다.
#include 
#include 

void substr(char *s1, char *s2, int len)
{
    int i, j, m = 0;
    int p, q;
    int length = strlen(s2);
    char a[100] = {0};
    char b[100] = {0};
    for(i = 0; i < len; i++)
    {
        for(j = 0; j < length; j++)
        {
            strcpy(a, "0");
            p = i;
            q = j;

            while(s1[p] == s2[q] && s1[p] != 0)
            {
                a[m] = s2[q];
                p++;
                q++;
                m++;
            }

            if(strlen(a) > strlen(b))
            {
                strcpy(b, a);
            }
            m = 0;
        }
    }
    printf("     :%s
"
, b); } int main() { char str1[100] = {0}; char str2[100] = {0}; int len; printf(" 1:"); scanf("%s", str1); printf(" 2:"); scanf("%s", str2); len = strlen(str1) <= strlen(str2) ? strlen(str1) : strlen(str2); if(len == strlen(str1)) { substr(str1, str2, len); } else if(len == strlen(str2)) { substr(str2, str1, len); } return 0; }

좋은 웹페이지 즐겨찾기