C ++比较两个句子

时间:2014-09-18 22:49:44

标签: c++ algorithm

随机发现了这个:

开发一种算法来比较两个句子,看看是否 他们匹配与否。这些句子的关键方面是 这些单词可以是任何顺序(例如"加利福尼亚很热"和" 热是加州"是两个匹配的句子。

任何想法?

2 个答案:

答案 0 :(得分:5)

  1. Parse each sentence into words, use space as delimiters.
  2. 将所有std::string个字词添加到std::vector<std::string>,然后sort
  3. 使用==operator比较两个vector是否相等。

答案 1 :(得分:1)

也许将单词放入std::map<string, int>并在每次在一侧找到单词时向上计数元素,然后在另一侧向下计数,然后迭代地图并检查所有条目是否为零。 [这假设&#34;加利福尼亚是热的&#34;不应该和&#34; hot是加利福尼亚&#34;,在这种情况下你需要更多的逻辑,只在你第一次看到它们时计算单词]

或者将每个句子中的每个单词放入std::vector<string>,然后对每个向量进行排序并比较两个向量。同样,如果无论每个单词被看到多少次都需要识别句子,策略就会发生变化。