程式語言 - LeetCode - C - 1657. Determine if Two Strings Are Close



參考資訊:
https://www.cnblogs.com/cnoodle/p/14325580.html

題目:


解答:

int mysort(const void *a, const void *b)
{
    return (*(int *)a) - (*(int *)b);
}

bool closeStrings(char* word1, char* word2)
{
    int cc = 0;
    int cnt[2][26] = { 0 };
    int w1_len = strlen(word1);
    int w2_len = strlen(word2);

    for (cc = 0; cc < w1_len; cc++) {
        cnt[0][word1[cc] - 'a'] += 1;
    }

    for (cc = 0; cc < w2_len; cc++) {
        cnt[1][word2[cc] - 'a'] += 1;
    }

    for (cc = 0; cc < 26; cc++) {
        if ((cnt[0][cc] > 0) && (cnt[1][cc] == 0)) {
            return false;
        }
        
        if ((cnt[1][cc] > 0) && (cnt[0][cc] == 0)) {
            return false;
        }
    }

    qsort(&cnt[0][0], 26, sizeof(int), mysort);
    qsort(&cnt[1][0], 26, sizeof(int), mysort);

    for (cc = 0; cc < 26; cc++) {
        if (cnt[0][cc] != cnt[1][cc]) {
            return false;
        }
    }

    return true;
}