C++ C++;比较两句话
随机发现: 开发一个算法来比较两个句子,看看是否 他们是否匹配。这些句子的关键是 单词的顺序可以是任意的(例如“加州很热”和 “热是加利福尼亚”这两句话很相配 有什么想法吗C++ C++;比较两句话,c++,algorithm,C++,Algorithm,随机发现: 开发一个算法来比较两个句子,看看是否 他们是否匹配。这些句子的关键是 单词的顺序可以是任意的(例如“加州很热”和 “热是加利福尼亚”这两句话很相配 有什么想法吗 将所有std::string单词添加到std::vector,然后进行sort 使用比较两个向量s是否相等 也许可以将单词放入std::map中,每次在一侧找到单词时,将元素数向上,在另一侧找到单词时,将元素数向下,然后在映射上迭代并检查所有条目是否为零。[这假设“加州很热”不应该与“加州很热”相同,在这种情况下,你需要更
std::string
单词添加到std::vector
,然后进行sort
向量
s是否相等也许可以将单词放入
std::map
中,每次在一侧找到单词时,将元素数向上,在另一侧找到单词时,将元素数向下,然后在映射上迭代并检查所有条目是否为零。[这假设“加州很热”不应该与“加州很热”相同,在这种情况下,你需要更多的逻辑,只在你第一次看到两边的单词时计数]
或者将每个句子中的每个单词放入一个
std::vector
,然后对每个向量进行排序并比较这两个向量。同样,如果需要识别句子,不管每个单词出现的次数如何,策略也会改变。是否有一种独立于语言的方法可以做到这一点?@templateboy我刚才描述了一种相对不可知的方法,实现将基于感兴趣的语言中可用的类和库。1。你是说==运算符会忽略单词的顺序吗?2.如果我们使用向量排序,那么复杂度是多少。要使两个向量进行同等比较,它们必须具有相同顺序的相同元素,因此需要排序。2.标准规定了vector
的sort
在理论上必须具有,您只需要一个已排序的向量(以及N个查找的logN复杂性),但这可能会较慢(快速排序对缓存非常友好)。如果(vector1==vector2)…比检查每个元素更容易编写。除非我们把《古兰经》和《圣经》或类似的东西相比较,否则它可能不会对现代计算机征税……;)从理论上讲,使用一个无序的_映射
当然是渐进地更快。在实践中,它是否更快还需要测量。同样,对于人类输入的文本,可能无法测量…;)如果(vector1==vector2)
,那么编写比检查每个元素要容易得多