【问题标题】:How to compare two strings and return the number of words that are the same?如何比较两个字符串并返回相同的单词数?
【发布时间】:2015-03-30 21:09:48
【问题描述】:

我正在用 C 编写代码,但我没有找到一种有效的方法来进行这种比较,如果有人可以帮助我,我将非常感激。

示例:

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

返回: 2

【问题讨论】:

  • 请添加您迄今为止尝试过的示例。
  • 我删除了我的代码,因为我对代码感到不安......将尝试再次这样做:S
  • 在第一次切词时,如果句子很短,只需使用strstr,如果长排序(和统一?)然后比较。

标签: c string compare words


【解决方案1】:

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

  • 复制每个字符串
  • 为每个字符串创建一个指向char*的指针数组,其中
  • 指向复制的字符串,依次
  • 解析为“单词”(将'\0' 放在所有非单词字符中
  • 在字符串数组上运行qsort

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 2016-04-17
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    相关资源
    最近更新 更多