先将全部字符串排序,再一个一个字符串排序
#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>
#include<queue>
#include<deque>
#include<climits>
#include<cstring>
#include<string>
#include<cmath>
#include<stdlib.h>
#include<map>
#include<stack>
#include<unordered_map>
#include<set>
#define inf INT_MAX
typedef long long ll;
const int N = 1e5 + 10;
string s[N];
int n;
int cnt;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> s[i];
}
sort(s + 1, s + 1 + n);
for (int i = 1; i <= n; i++)
{
sort(s[i].begin(), s[i].end());
}
for (int i = 1; i < n; i++)
{
if (s[i] != s[i + 1])
{
cnt++;
}
}
cout << cnt + 1 << endl;
return 0;
}
反过来
#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>
#include<queue>
#include<deque>
#include<climits>
#include<cstring>
#include<string>
#include<cmath>
#include<stdlib.h>
#include<map>
#include<stack>
#include<unordered_map>
#include<set>
#define inf INT_MAX
typedef long long ll;
const int N = 1e5 + 10;
string s[N];
int n;
int cnt;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> s[i];
sort(s[i].begin(), s[i].end());
}
sort(s + 1, s + 1 + n);
for (int i = 1; i <= n; i++)
{
if (s[i - 1] != s[i])
{
cnt++;
}
}
cout << cnt << endl;
return 0;
}