//思路:用map<string,int>记录重排string后出现的次数,如果为1次,就是我们想要的结果
AC源码:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <cctype>
using namespace std;
map<string,int> cnt;
vector<string> svec;
void solve()
{
string buf;
while(cin>>buf)
{
if(buf=="#")
break;
svec.push_back(buf);
for(int i=0;i<buf.length();++i)
buf[i]=tolower(buf[i]);
sort(buf.begin(),buf.end());
if(!cnt[buf])
cnt[buf]=0;
cnt[buf]++;
}
sort(svec.begin(),svec.end());
vector<string> ans;
for(int i=0;i<svec.size();++i)
{
string tmp=svec[i];
for(int i=0;i<tmp.length();++i)
tmp[i]=tolower(tmp[i]);
sort(tmp.begin(),tmp.end());
if(cnt[tmp]==1)
ans.push_back(svec[i]);
}
for(int i=0;i<ans.size();++i)
cout<<ans[i]<<endl;
}
int main()
{
solve();
return 0;
}
字符串重组与匹配算法
本文介绍了一种使用C++实现的字符串重组与匹配算法。该算法通过将输入字符串进行排序和转换为小写来标准化处理,并利用map数据结构记录每个标准化后的字符串出现的次数。最终输出所有唯一出现一次的原始字符串。
535

被折叠的 条评论
为什么被折叠?



