字母异位词分组
题目描述
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
输入格式
第一行正整数n,表示有n个字符串(1<=n<=1000)
第二行n个字符串,空格隔开
输出格式
多组字母异位词,每组占一行,每个字符串空格隔开,每组字符次序与原字符串前后次序不变。
样例 #1
样例输入 #1
6
eat tea tan ate nat bat
样例输出 #1
eat tea ate
tan nat
bat
#include<bits/stdc++.h>
using namespace std;
string s, x, c[1000];
map<string, string> b;
int n, cnt = 0;
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> s;
x = s;
sort(x.begin(), x.end());
if (b.find(x) == b.end()) {//新词
b[x] = s;
c[++cnt] = x;
} else {//已有的就合在一起
b[x] = b[x] + " " + s;
}
}
for (int i = 1; i <= cnt; i++) {
cout << b[c[i]] << endl;
}
return 0;
}