我刚开始学习C.我现在想要的是我有两个字符串,其中每个单词用空格分隔,我必须返回两个字符串中匹配单词的数量。那么,在C中是否有任何函数我可以将每个单词与另一个单词中的每个单词进行比较,如果不知道我怎么做的话。
答案 0 :(得分:1)
分解单词中的第一个字符串,这可以通过循环遍历每个空格插入\0
的字符数组到使用strtok
的所有方式完成。
对于找到的每个单词,使用strstr
检查另一个字符串,检查字符串是否在那里。只需检查strstr
的返回值,如果!= NULL
找到了它。
答案 1 :(得分:0)
我不会使用strtok
,而是使用指针算术长度比较和memcmp
来比较相等长度的字符串。
答案 2 :(得分:0)
这里有两个问题:
1)将每个字符串分成单词
strtok()
函数可以将字符串拆分为单词。
想象一下如何将自己的等价物写成strtok
,这是一项有意义的练习。
rosetta project同时显示了strtok
和自定义方法来解决此问题。
我自然会编写自己的解析器,因为它是那种吸引我的代码。这对你来说可能很有趣。
2)在一个字符串中找到那些也在另一个
中的单词如果对一个字符串中的每个单词迭代另一个单词中的每个单词,则其复杂度为O(n*n)。
如果您将一个字符串中的单词编入索引,则只需要O(n)就可以快得多(如果您的输入足够大以使其变得有趣)。值得想象的是如何在一个字符串中构建hashtable个单词,以便在另一个字符串中查找单词。