-1

我需要计算唯一单词的数量,并且使用下面的代码,它似乎计算不正确。我不确定我还能做些什么来让它发挥作用,并且非常感谢任何建议。

#include <iostream>
#include <string>
#include <set>
using std::string;
using std::set;


unsigned long countUWords(const string& s)
{
   set<string> uw;
   string word = "";
   for(size_t i = 0; i < s.size(); i++){
       bool words = (s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z');
           if(words){
               word += s[i];
           }
           else if(!words && word != ""){
               uw.insert(word);
               word = "";
           }
   }
   if (word != "")
       uw.insert(word);
   return uw.size();
}

int main ()
{
    string s;
    unsigned long UWords = 0;
    while(getline(cin, s)){
        UWords += countUWords(s);
    }
    cout << UWords << endl;
    return 0;
}
4

1 回答 1

0

for循环结束时,您需要检查是否word为空。如果不是,您需要推送word集合内的内容。

for 循环的结束括号之后,添加:

if (word != "")
    uw.insert(word);

您所见,在编辑后它工作得很好。

于 2013-09-30T18:08:12.897 回答