标签:
题意:给出一些单词,在这些单词里面找出不能通过字母重排得到的单词(判断的时候不用管大小写),然后按照字典序输出。
学习的紫书的map= =
将每一个单词标准化 先都转化为小写,再排序(即满足了题目中说的不能通过字母重排这个条件) 然后记录出现次数,将出现次数为1的储存再输出
话说这一题的标准化要好好学学= =(字母重排用排序来做= =)
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<vector> 5 #include<algorithm> 6 #include<cctype> 7 #include<set> 8 #include<map> 9 using namespace std; 10 11 map<string,int> cnt; 12 vector<string> words; 13 vector<string> ans; 14 15 string repr(const string& s) 16 { 17 string ans=s; 18 for(int i=0;i<ans.length();i++) 19 ans[i]=tolower(ans[i]); 20 sort(ans.begin(),ans.end()); 21 return ans; 22 } 23 24 int main() 25 { 26 string s; 27 while(cin>>s) 28 { 29 if(s[0]==‘#‘) break; 30 words.push_back(s); 31 string r=repr(s); 32 if(!cnt.count(r)) cnt[r]=0; 33 cnt[r]++; 34 } 35 for(int i=0;i<words.size();i++) 36 if(cnt[repr(words[i])]==1) ans.push_back(words[i]); 37 38 sort(ans.begin(),ans.end()); 39 for(int i=0;i<ans.size();i++) 40 cout<<ans[i]<<"\n"; 41 return 0; 42 }
标签:
原文地址:http://www.cnblogs.com/wuyuewoniu/p/4296585.html