这一道题注意一下字母顺序问题就ok
#include<stdio.h> #include <algorithm> #include <iostream> #include <string.h> #include <queue> #include <map> #include <string> using namespace std; map<string,bool>q; char p[1005]; string s; bool vis[30]; int main() { q.clear(); int t,l,sum=0; scanf("%d",&t); for(int i=0;i<t;i++) { memset(vis,0,sizeof(vis)); s.clear(); scanf("%s",p); l=strlen(p); for(int i=0;i<l;i++) vis[p[i]-'a']=1; for(int i=0;i<26;i++) { if(vis[i]) s+='a'+i; } if(!q[s]) sum++; q[s]=1; } printf("%d\n",sum); return 0; }