如何计算字符串中的相同单词
输入
字符串数
String1 = dadymathewdadreadad
String2 = sdgfghhjdjrjjyjjrtfdhe
搜索=爸爸
输出
字符串1中的爸爸数= 3
字符串2中的爸爸数= 0
#include <iostream>
#include <string.h>
using namespace std;
int main() {
string str[50];
int n;
cin>>n;
for(int i = 0; i < n;i++) {
cin>>str[i];
}
for(int i = 0; i < 50;i++) {
if(substr(i,4) == "dad"){
n += 1;
}
}
cout<<n;
return 0;
}
在函数'int main()'中: [错误]未在此范围内声明“ substr”
答案 0 :(得分:2)
您可以在此处使用的一个技巧是仅用空字符串替换搜索词(例如dad
),然后比较替换前后的字符串长度。
string input = "dadymathewdadreadady";
string search = "dad";
int size_orig = input.size();
replace(string, search, "");
cout << "number of 'dad' is: " << (size_orig - input.size()) / search.size();
答案 1 :(得分:2)
您可以使用find()
的{{1}}成员函数,在每次成功查找之后调整开始位置,直到字符串结尾:
std::string
答案 2 :(得分:0)
其他解决方案:
#include <iostream>
#include <string>
using namespace std;
int main(){
int n;
string s[50];
int c;
cin>>n;
for (int i=0;i<n;i++){
cin>>s[i];
}
for (int i=0;i<n;i++) {
c=0;
int found=s[i].find("jack");
while(found!=string::npos){
found=s[i].find("jack",found+1);
if(found) c++;
}
cout<<c<<endl;
}
}