Sample input:
3//所要计数的单词的最小长度
abc 123 abc iie I hate TA //一个句子
Sample output:
2
7
4
代码:
//main.cpp
#include <iostream>
#include <cstdio>
#include <string>
#include "WordsCounter.h"
using namespace std;
int main() {
WordsCounter wordsCounter(5);
cout << wordsCounter("It is so interesting that I like it greatly") << endl;
string text = "it is so interesing that I like it greatly";
wordsCounter.setBound(2);
cout << wordsCounter(text) << endl;
int n;
cin >> n;
getchar(); // get the enter
getline(cin, text);
wordsCounter.setBound(n);
cout << wordsCounter(text) << endl;
return 0;
}
//WordsCounter.h
#ifndef WORD_H
#define WORD_H
#include<set>
#include<iostream>
using namespace std;
class WordsCounter {
public:
WordsCounter() {}
explicit WordsCounter(int len):length(len) {}
int operator()(string str) {
set<string> strset;
int i;
string tmp;
for (i = 0; i < str.size(); i++) {
while (str[i] == ' ') i++;
while (str[i] != ' ' && i < str.size()) {
tmp.push_back(str[i]);
i++;
}
if (!tmp.empty() && tmp.size() >= length)
strset.insert(tmp);
tmp.clear();
}
return strset.size();
}
void setBound(int len) {length = len;}
private:
int length;
};
#endif