在c ++中找到重复的单词数

时间:2010-11-16 18:46:18

标签: c++

无论如何都要找出一个单词在文本中重复的次数。

文本在字符数组(char [])

  

text =这是一本书,还有这本书   是关于书。

     

word = book

     

result = 3

4 个答案:

答案 0 :(得分:1)

因为这显然是家庭作业而且没有标记,所以我会给你一个解决方案,你显然无法作为你的作业提交,因为你的老师会知道你是在互联网上得到的。< / p>

没有诸如忽略标点符号等要求,因此我允许自己编写一个版本,该版本仅适用于明确分隔的单词,因此在示例文本字符串中插入空格。

#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>

    // Count clearly separated occurrences of `word` in `text`.
std::size_t count ( const std::string& text, const std::string& word )
{
    std::istringstream input(text);
    return (std::count(std::istream_iterator<std::string>(input),
        std::istream_iterator<std::string>(), word));
}

int main ( int, char ** )
{
    const char text[] = "this is a book , and this book is about book .";
    const char word[] = "book";
    std::cout << count(text, word) << std::endl;
}

输出:

  

3

答案 1 :(得分:0)

您可能希望使用std::string实现此目的,here是您开始使用的示例。

答案 2 :(得分:0)

最简单的方法是遍历字符串,计算找到您要查找的单词的次数。我确信您可以使用<algorithm>中的函数轻松地完成它,但是如果您不得不问是否可以在C ++中执行此操作,我认为您不够先进以尝试使用算法库,无论如何自己动手都会更有教学意义。

我建议使用std::string但是如果你被允许的话(因为这个问题听起来像家庭作业,可能带来额外的限制)。使用std::string比char数组更容易且更不容易出错。尽管如此,它可以完成。

答案 3 :(得分:0)

有可能。

你有一个字符数组。尝试在一张纸上进行搜索,逐个字符:

  

第一个字符是T.这不是b,所以它不能是“book”的第一个字符   第二个字符是h,所以再一次,它不是b ...

     

[...]

     

下一个角色是b ...噢,这可能是它。下一个角色是o吗?是!!!接下来另一个o ??? ...等等。

当你可以这样做时,你将能够使用C ++来完成它。

请记住,您可以使用[]运算符访问数组中的第n个字符:

char c = array[5] ; // c is the 6th character in the array

现在,转向C ++的方式首先是使用std :: string而不是chars数组,并使用strings方法。谷歌的std::string methods,我想你应该找到一些你可以使用的... 所以你应该设法编写一些代码来迭代每个字符直到结束

我想这应该足够了。

你的家庭作业(因为这里的每个人都知道这是一个家庭作业问题)更多的是寻找解决方案而不是找到它:这不是死记硬背的学习。

我怀疑Stack Overflow上的任何人都记得这个经典问题的解决方案。但我想大多数人都知道如何找到一个解决方案。 你需要学习“如何找到”心态,所以请让你的编译器再试一次......

P.S。:当然,如果你对C ++知之甚少或者什么都不知道,那么你就搞砸了,你可以从Googling some C++ Tutorials开始。