程式語言 - LeetCode - C - 1071. Greatest Common Divisor of Strings



參考資訊:
https://leetcode.com/studyplan/leetcode-75/
https://github.com/doocs/leetcode/blob/main/solution/1000-1099/1071.Greatest%20Common%20Divisor%20of%20Strings/README_EN.md

題目:


解答:

int gcd(int a, int b)
{
    if(b == 0) {
        return a;
    }
    
    return gcd(b, a % b);
}

char* gcdOfStrings(char* str1, char* str2)
{
    int cc = 0;
    int s1_len = strlen(str1);
    int s2_len = strlen(str2);

    char *t1 = malloc(s1_len + s2_len + 1);
    char *t2 = malloc(s1_len + s2_len + 1);

    strcpy(t1, str1);
    strcat(t1, str2);

    strcpy(t2, str2);
    strcat(t2, str1);

    if (strcmp(t1, t2)) {
        return "";
    }

    cc = gcd(s1_len, s2_len);
    str1[cc] = 0;
    return str1;
}