我的任务是扩展我当前的代码(从用户的输入中提取两个单词,并检查它们是否为字形)。
该代码接受用户的输入,然后一次一个单词填充一个数组。如果数组在末尾匹配,那么它们就是变形词。
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“、”胖“、"dat”、"ats")放入一个数组中。然后我们获取另一个数组,并将其设置为唯一单词的数量,即第一个单词。
例如:"art“和"cat”是唯一的,但如果包括"tar",那么"tar“就不是唯一的。
它将计算作为唯一单词的字形的单词的数量,然后在最后显示成组的字形的所有单词。
要做到这一点,我怀疑我之前的代码将不得不更改一大堆,而我不知道从哪里开始。
发布于 2016-01-31 11:32:46
您可以从您的频率数组重新生成一个单词,它将是唯一的。
这些可以简单地按字母顺序排序。例如:-
tar :艺术
rat :艺术
或者你可以用字母来编码频率:-
tar : 1a1r1t (1 'a',1 'r‘和1 't’)
苹果: 1a1e1l2p
现在,您可以将这些生成的单词放在一个数组中并检查重复项,也可以使用一个set来获取唯一计数。
https://stackoverflow.com/questions/35109887
复制相似问题