【发布时间】:2021-10-26 07:42:22
【问题描述】:
这是我尝试将字符串拆分为单词然后继续前进的方法,但这不起作用。 例如,输入是:hey hi Mark hi mark 那么输出应该是: 嘿-1 嗨-2 标记-1 嗨-2 标记-1
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<vector<string> > strs;
string str;
cout<<"Enter your strings"<<endl;
getline(cin, str);
int len=str.length();
int j=0;
string s="";
for(int i=0; i<len; i++){
s+=str[i];
if(str[i+1]==' ' || i+1==len){
strs[0][j]=s;
s="";
j++;
i++;
}
}
strs[0][j]="NULL";
int freq;
vector<int> frequency;
for(int n=0; strs[0][n]!="NULL" ;n++){
freq=1;
for(int m=0; strs[0][m]!="NULL"; m++){
if(strs[0][n]==strs[0][m]){
freq++;
}
frequency.push_back(freq);
}
}
for(int x=0; strs[0][x]!="NULL"; x++){
cout<<strs[0][x]<<" - "<<frequency[x]<<endl;
}
return 0;
}
【问题讨论】:
-
经典方法是使用
std::unordered_map<std::string, uint> histogram;,并在每次出现时将其递增histogram["word"]++;。