我和我的课程伙伴似乎无法解决这个问题。 (这是家庭作业) 我们已经尝试了2周,但我们无法弄明白。
在标题中,我们需要编写一个函数,在给定的字符串中找到相似的单词。 相似的单词:包含相同字母的2个单词(如果大写或小写,则不重要,以及相同字母出现的次数)。示例:便宜 - 桃子。保姆 - 任何。
问题是我们只允许使用stdio.h库,不能使用内存分配函数,也不能使用动态数组。
我希望我对这个问题已经足够清楚了。 请帮助我们解决这个难题。
答案 0 :(得分:1)
类似的东西:(需要正确的案例转换,留给读者练习) 你需要一个类似的迭代器来遍历句子中的单词。
bool wordsAreSimilar(char* string1, char* string2)
{
bool letterFound = false;
char *s1_iterator = string1;
char *s2_iterator = string2;
for ( ; *s1_iterator != '\0' ; s1_iterator++ )
{
for ( s2_iterator = string2, letterFound = false ;
/* word terminator needs improvement */
(*s2_iterator != '\0' && *s2_iterator != ' ')
&& !letterFound ;
s2_iterator++ )
{
letterFound = (*s1_iterator == *s2_iterator);
}
if (!letterFound) return false;
}
return true;
}
答案 1 :(得分:0)
使用布尔数组来追踪每个单词中出现的字母(因为yu只允许使用stdio.h
,将其声明为int
数组)并将所有元素初始化为{{ 1}}(aasuming该字符串不超过20个单词):
0
对于每个单词,如果第一次在单词中找到一个字母,请将int words[20][26] = {0} // First dimension is for words and second is for 26 letters.
替换为0
。之后,只需比较数组元素,找出哪个单词由相同的字母组成。