Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;比较两句话_C++_Algorithm - Fatal编程技术网

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)
    ,那么编写
    比检查每个元素要容易得多