题解 | #查找兄弟单词#
查找兄弟单词
http://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
这道题很多坑,详细看我的xd函数
#include <bits/stdc++.h>
using namespace std;
vector<string> xd (vector<string>& str, string s) {
vector<string> result;
int n = s.size();
for (int i = 0; i < str.size(); i++) {
int tem = str[i].size();
if (tem != n || str[i] == s) continue;
else {
int flag = 0;
vector<int> num1(26,0);
for (int j = 0; j < n; j++) {
num1[str[i][j] - 'a'] ++;
}
for (int j = 0; j < n; j++) {
num1[s[j] - 'a'] -= 1;
if (num1[s[j] - 'a'] < 0) {
flag = 1;
break;
}
}
if (!flag) {
result.push_back(str[i]);
//cout << str[i] << endl;
}
}
}
return result;
}
int main () {
int n;
cin >> n;
vector<string> str(n);
vector<string> result;
for (int i = 0; i < n; i++) {
cin >> str[i];
}
string s;
int k;
cin >> s >> k;
result = xd(str, s);
cout << result.size() <<endl;
sort (result.begin(), result.end());
if (k <= result.size()) {
cout << result[k - 1] << endl;
}
return 0;
}