题解 | #查找兄弟单词#
查找兄弟单词
https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
#include<iostream>
#include<string>
#include<vector>
#include<array>
#include<list>
using namespace std;
array<int, 128> xd;
array<int, 128> ss;
array<int, 128> arr(string s) {//统计各字符个数
array<int, 128> a{ 0 };
for (char c : s)
a[c]++;
return a;
}
int pd(string s) {//判断是否是兄弟单词
ss = arr(s);
if (ss == xd)
return 1;
return 0;
}
int main() {
list<string> lis;
vector<string> vec;
int n, k; string s, x;
getline(cin, s, ' '); n = stoi(s);
for (int i = 0; i < n; i++) {
getline(cin, s, ' ');
vec.push_back(s);
}
getline(cin, x, ' ');
getline(cin, s); k = stoi(s);
//输入完成
xd = arr(x);
for (auto it : vec) {
if (pd(it) && it != x)
lis.push_back(it);
}//得到兄弟字典,用list而不是map是为了能够添加重复的兄弟单词
cout << lis.size() << '\n';
lis.sort();//默认就是字典排序
int num = 0;
for (auto it : lis) {
num++;
if (num == k)
cout << it;
}
}

