在c ++中计算字符串中的特定单词

时间:2014-12-23 06:27:42

标签: c++ visual-c++

我是编程新手。请帮我解决这个程序:

  

程序获取一个字符串和一个单词,并使用c \ c ++检查字符串中该单词的出现次数。

谢谢你变化多了

这是我的第一篇文章。

1 个答案:

答案 0 :(得分:0)

如果您想在字符串中找到pattern or word的出现次数,可以使用KMP算法。

它将为您提供字符串中单词出现的总次数。

示例:

string  = "abaabcabaabd"  
word    = "aba"

输出为2, aba abc aba abd

复杂性:O(n)其中n是字符串的长度

更新1:
我实际上并不知道你在说什么问题:(
但是,如果你想计算这个例子中的单词数量:

string : hi how are you how are hi how
word   : how

how包含3次。 hi *how* are you *how* are hi *how*

如果你的问题是这样,那么这个程序将会:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string str,word;
    getline(cin,str);
    getline(cin,word);

    stringstream ss(str);
    int cnt=0;
    while(ss>>str)
    {
        if(str==word)
          cnt++;
    }
    cout<<cnt<<"\n";
return 0;
}

更新2:
使用指针解决同样的问题:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    char str[100],word[100];
    gets(str);
    gets(word);

    char *token=strtok(str," ");

    int cnt=0;
    while(token!=NULL)
    {
        if(strcmp(token,word)==0)
          cnt++;
        token=strtok(NULL," ");
    }
    cout<<cnt<<"\n";
return 0;
}