2016-01-31 26 views
0

我被賦予了擴展當前代碼的功能(從用戶的輸入中抽取兩個單詞並檢查它們是否是anagrams)。多字anagram檢查器

代碼獲取用戶的輸入,然後每次填入一個單詞,填充數組。如果數組在最後匹配,那麼它們就是字謎。

int check(char a[], char b[]) 
{ 
    int first[26] = { 0 }, second[26] = { 0 }, c = 0; 

    while (a[c] != '\0') 
    { 
     first[a[c] - 'a']++; 
     c++; 
    } 

    c = 0; 

    while (b[c] != '\0') 
    { 
     second[b[c] - 'a']++; 
     c++; 
    } 

    for (c = 0; c < 26; c++) 
    { 
     if (first[c] != second[c]) 
      return 0; 
    } 

    return 1; 
} 

我現在的困境是我不知道如何做「20字的部分」。

我們應該把20個單詞(例如「art」,「tar」,「cat」,「fat」,「dat」,「ats」)放到一個數組中。然後,我們再採用一個數組,並將其作爲唯一字的數量,也就是同類中第一個字的數量。例如:「art」和「cat」是唯一的,但如果包含「tar」,那麼「tar」並不是唯一的。

它將統計唯一字的字形數,然後在字符組中顯示所有字。

要做到這一點,我懷疑我以前的代碼將不得不改變一大堆,我不知道從哪裏開始。

回答

0

您可以重新生成頻率數組中的一個單詞,該單詞將是唯一的。
這些可以簡單地按字母順序排序。例如: -
焦油:藝術
大鼠:藝術

或者,可以編碼該頻率隨後字母: -
焦油:(1 '',1 'r' 和1 'T')1a1r1t
apple:1a1e1l2p

現在,您可以將這些生成的單詞放在數組中並檢查重複項,或者您可以使用一組來獲取唯一的計數。

+0

你給我的第二種方法是我認爲應該包含的方法。如何將設置設置爲唯一的計數,以及如何設置最多或組織。 –