~题目链接~
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=1500&cid=1183
std::string字符串大小写转换~http://www.haogongju.net/art/2158882
ai枫 的博客 http://www.cnblogs.com/luyingfeng/p/3161649.html
输入
5 3 Inkfish Henry Carp Max Jericho Carp Max Carp 0
结果
3
(1).multimap多重映照容器 + std::transform函数
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<map>
#include<string>
#include<iostream>
#include<algorithm>//包括各种数据结构的具体元素检索、替换、逆序等等通用的算法
using namespace std;
int main()
{
int n,m;
string str;
while(~scanf("%d",&n)&&n!=0)
{
map<string,int> Q;
scanf("%d",&m);
int k=0;
for(int i=0; i<n; i++)
{
cin>>str;
transform(str.begin(),str.end(),str.begin(),::tolower);
/*transform(str.begin(), str.end(), str.begin(), ::tolower); //将大写的都转换成小写
transform(str.begin(), str.end(), str.begin(), ::toupper); //将小写的都转换成大写
transform(str.begin(), str.end(), str.begin(), exchange); //大小写切换*/
Q.insert(pair<string,int>(str,1));//插入元素
}
for(int i=0; i<m; i++)
{
cin>>str;
transform(str.begin(),str.end(),str.begin(),::tolower);
if(Q.find(str)!=Q.end())//查找键值
{
if(Q[str])
{
Q[str] = 0;
k++;
}
}
}
printf("%d\n",n-k);
}
}
(2).map容器
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<map>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
void updata(char *str )
{
int i,len=strlen(str);
for (i=0; i<len; i++)
{
if( str[i]<='z' && str[i] >='a')
str[i]=str[i]-'a'+'A';
}
}
int main()
{
int n,m;
while(~scanf("%d",&n)&&n!=0)
{
map<string,int>Q;
char str[12];
scanf("%d",&m);
int k=0;
for(int i=0; i<n; i++)
{
scanf("%s",str);
updata(str);
Q[str]++;
}
for(int i=0; i<m; i++)
{
scanf("%s",str);
updata(str);
if(Q[str])
{
Q[str]=0;
k++;
}
}
printf("%d\n",n-k);
}
return 0;
}