用于在C中查找给定字符串中的相似单词的函数

时间:2014-12-28 09:27:53

标签: c

我和我的课程伙伴似乎无法解决这个问题。 (这是家庭作业) 我们已经尝试了2周,但我们无法弄明白。

在标题中,我们需要编写一个函数,在给定的字符串中找到相似的单词。 相似的单词:包含相同字母的2个单词(如果大写或小写,则不重要,以及相同字母出现的次数)。示例:便宜 - 桃子。保姆 - 任何。

问题是我们只允许使用stdio.h库,不能使用内存分配函数,也不能使用动态数组。

我希望我对这个问题已经足够清楚了。 请帮助我们解决这个难题。

2 个答案:

答案 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。之后,只需比较数组元素,找出哪个单词由相同的字母组成。