单词数解题报告

来源:互联网 发布:c语言优先级排序 编辑:程序博客网 时间:2024/05/17 08:53

题目大意:找到不同的单词数目
解题方法:map容器,利用map的不可重复性,把单词压map里, 直接读map.size();
注意事项:用字符数组接收读入的字符串, 因此先把空格的字符读掉,
进入循环时从读完空格的地方开始,进入循环后,巧妙利用len计算单词长度。

#include <iostream>#include <map>#include <stdio.h>#include <string.h>#include<string>using namespace std;map<string,int>MAP;int main(){    char ch[1000000];    string str,l;    while(gets(ch)&&ch[0]!='#')    {   MAP.clear();        l=ch;        int i=0,a=0;        int len=0,q=1;        while(ch[i]==' ') i++;        if(strlen(ch)==i)        {            cout<<'0'<<endl;            continue;        }        for(i; i<strlen(ch)+1; i++)        {            if(ch[i]>='a'&&ch[i]<='z')            {                q=0;                len++;            }            else            {                if(q==0)                {                     a=i-len;                    str=l.substr(a,len);                    MAP[str]=1;                    q=1;                    len=0;                }            }        }        cout<<MAP.size()<<endl;    }}