如何比较两个字符串和 return 相同的单词数?

How to compare two strings and return the number of words that are the same?

我正在用 C 编写代码,我还没有找到一种有效的方法来进行这种比较,如果有人能帮助我,我将不胜感激。

示例:

W1:白墙大房子 W2:房屋墙壁

return: 2

在思考如何解决问题时,将其分解为您可以清楚地看到如何进行以及它们如何朝着解决方案前进的步骤会有所帮助。像这样的事情通常的方法是

  • 复制每个字符串
  • 对于每个字符串,创建一个指向 char* 的指针数组,其中
  • 指向复制的字符串,依次
  • 解析为 "words"(将 '[=11=]' 放在所有非单词字符处
  • 运行 qsort 在字符串数组上

然后,有了两个排序的单词指针数组,您可以使用 strcmp 编写一个循环来检查单词的相等性。我建议 strcmp 因为(因为数组是排序的)检查两个数组中的一个或另一个相对于另一个缺少单词的时间很简单。

copy/parse/sort 部分自然是一个函数,给定一个字符串并返回指针数组。调用者应该释放它(以及它指向的切碎的字符串)。