我获得了扩展我当前代码的任务(一个从用户的输入中获取两个单词并检查它们是否是字谜)。
代码接受用户的输入,然后一次一个字填充数组。如果数组最后匹配,则它们是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;
}
我现在面临的困境是,我不知道怎么做&#34; 20个单词&#34;。
我们应该拿20个单词(例如&#34; art&#34;,&#34; tar&#34;,&#34; cat&#34;,&#34; fat&#34;, &#34; dat&#34;,&#34; ats&#34;)并将它们放入一个数组中。然后我们采用另一个数组,使其成为唯一单词的数量,即同类词中的第一个。
示例:&#34; art&#34;和&#34; cat&#34;是唯一的,但如果你包括&#34; tar&#34;,那么&#34; tar&#34;不是唯一的。
它将计算单词的字组数量,然后显示字组中的所有单词。
要做到这一点,我怀疑我之前的代码将不得不改变一大堆,我不知道从哪里开始。
答案 0 :(得分:0)
您可以从频率数组中重新生成一个单词,这个单词将是唯一的。
这些可以按字母顺序排序。例如: -
焦油:艺术
老鼠:艺术
或者你可以用频率编码频率: -
焦油:1a1r1t(1&#39; a&#39;,1&#39; r&#39;和&#39; t&#39;)
苹果:1a1e1l2p
现在您可以将这些生成的单词放在一个数组中并检查重复项,或者您可以使用一组来获取唯一计数。