多字字谜检查器

Multiple word anagram checker

本文关键字:检查      更新时间:2023-10-16

我被分配了扩展当前代码的任务(一个从用户输入中获取两个单词并检查它们是否是字谜的代码)。

代码接受用户的输入,然后一次一个单词填充数组。如果数组在末尾匹配,则它们是字谜。

int check(char a[], char b[])
{
    int first[26] = { 0 }, second[26] = { 0 }, c = 0;
    while (a[c] != '')
    {
        first[a[c] - 'a']++;
        c++;
    }
    c = 0;
    while (b[c] != '')
    {
        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")放入一个数组中。然后我们取另一个数组,使其成为唯一单词的数量,即同类中的第一个单词。

示例:"艺术"和"猫"是唯一的,但如果包括"tar",则"tar"不是唯一的。

它将计算唯一单词的字谜单词数,然后在最后显示字谜组中的所有单词。

为此,我

怀疑我以前的代码将不得不更改一大堆,我不知道从哪里开始。

您可以从频率数组中重新生成一个单词,这将是唯一的。
这些可以简单地按字母顺序排序。前任:-
焦油 : 艺术
老鼠 : 艺术

或者您可以编码频率后跟字母:-
焦油 : 1A1R1t (1 "A", 1 "R" 和 1 "T" )
苹果 : 1A1E1L2P

现在,您可以将这些生成的单词放在数组中并检查重复项,也可以使用集合来获取唯一计数。