题目:题目链接
题意:就是给你一个字符串,判断这个字符串中拥有的不同的单词的个数是多少个?
分析:每次拿出一个单词后映射到map的int中,最后输出size就可以了,强大
代码:
#include <iostream>
#include <cstdio>
#include <string>
#include <string.h>
#include <map>
#include <vector>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <queue>
#include <set>
#include <stack>
#include <functional>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <numeric>
#include <cassert>
#include <bitset>
#include <stack>
#include <ctime>
#include <list>
#define INF 0x7fffffff
#define max3(a,b,c) (max(a,b)>c?max(a,b):c)
#define min3(a,b,c) (min(a,b)<c?min(a,b):c)
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int main()
{
char num[1000000];
string str, l;
int m;
int i;
int a, len, q;
while(gets(num) && num[0] != '#')
{
a = 0;
m = 0;
q = 0;
len = 0;
map<string, int>mp;
map<string, int>::iterator p;
l = num;
i = 0;
while(num[i] == ' ')
i++;
if(i == strlen(num))
{
printf("0\n");
continue;
}
for(; i < strlen(num) + 1; ++i)
{
if(num[i] >= 'a' && num[i] <= 'z')
{
len ++;
q = 0;
}
else
{
if(q == 0)
{
a = i - len;
str = l.substr(a, len);
mp[str] = 1;
len = 0;
q = 1;
}
}
}
printf("%d\n", mp.size());
}
return 0;
}