URL :atcoder
题面描述:
给出n个字符串,求其中两个字符串互相是10个字符所构成的排列有几对
思路:
使用map来映射每种字符串即可
代码:
#include<bits/stdc++.h>
using namespace std;
long long n;
stringstream ss;
string its(long long x){
string aans;
ss<<x;
ss>>aans;
ss.clear();
ss.str("");
return aans;
}
int cnt[300];
string tmp,s;
unsigned long long ans=0;
unordered_map<string,unsigned long long> us;
unordered_map<string,unsigned long long>::iterator it;
char c;
int main(){
scanf("%lld",&n);
for(int i=0;i<n;i++){
fill(cnt,cnt+256,0);
tmp="";
cin>>s;
for(int j=0;j<s.size();j++) {
cnt[(int)(s[j]-'a')]++;
}
for(int j=0;j<30;j++) tmp=tmp+its(cnt[j]);
us[tmp]++;
}
for(it=us.begin();it!=us.end();it++){
if(it->second>=2) {
unsigned long long tmp;
tmp=it->second*(it->second-1)/2;
ans+=tmp;
}
}
cout<<ans;
return 0;
}
最后一次更新于2019-08-10
0 条评论