自认为稍微比紫书代码好理解一些,可能有点慢,但对我这样的蒟蒻友好很多。 和紫书比较大的区别主要在我用map对应的是标准化字符串和输入的字符串
//Uva 156
#include<iostream>
#include<map>
#include<string>
#include<algorithm>
using namespace std;
string dc[1010];
void zh(string& znow) //将字符串标准化
{
int len=znow.size();
for(int i=0;i<len;i++)
{
if(znow[i]<=‘Z‘&&znow[i]>=‘A‘)
znow[i]+=32;
}
sort(znow.begin(),znow.end());
}
int main()
{
map<string,string>smap; //将字符串映射到标准化的字符串
string now;
cin>>now;
while(now!="#")
{
string znow=now;
zh(znow);
if(smap.count(znow)==0) //map里没有标准化字符串,添加
{
smap[znow]=now;
}
else //map里已有标准化字符串,删除(变为*)
{
smap[znow]="*";
}
cin>>now;
}
int a=0;
map<string,string>::iterator iter;
for(iter=smap.begin();iter!=smap.end();iter++)
{
if(iter->second!="*") //只出现过一次的标准化字符串
dc[a++]=iter->second;
}
sort(dc,dc+a); //排序
for(int j=0;j<a;j++)
cout<<dc[j]<<endl;
return 0;
}
原文:https://www.cnblogs.com/PandaChang/p/10633199.html