随机发现了这个:
开发一种算法来比较两个句子,看看是否 他们匹配与否。这些句子的关键方面是 这些单词可以是任何顺序(例如"加利福尼亚很热"和" 热是加州"是两个匹配的句子。
任何想法?
答案 0 :(得分:5)
std::string
个字词添加到std::vector<std::string>
,然后sort
。==
operator比较两个vector
是否相等。答案 1 :(得分:1)
也许将单词放入std::map<string, int>
并在每次在一侧找到单词时向上计数元素,然后在另一侧向下计数,然后迭代地图并检查所有条目是否为零。 [这假设&#34;加利福尼亚是热的&#34;不应该和&#34; hot是加利福尼亚&#34;,在这种情况下你需要更多的逻辑,只在你第一次看到它们时计算单词]
或者将每个句子中的每个单词放入std::vector<string>
,然后对每个向量进行排序并比较两个向量。同样,如果无论每个单词被看到多少次都需要识别句子,策略就会发生变化。