题解 | 查找兄弟单词
#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <cmath>
using namespace std;
int main() {
int n;
cin >> n;
vector<string> vec;
string str;
for (int i = 0; i < n; ++i) {
cin >> str;
vec.push_back(str);
}
string s;
cin >> s;
int k;
cin >> k;
if (s.size() == 1) {
cout << 0;
return 0;
}
long sl = 0;
for (char it : s) {
sl += pow(10, it - 'a');
}
bool f = false;
for (int i = 1; i < s.size(); ++i) {
if (s[i] == s[i - 1]) {
f = true;
break;
}
}
vector<string> vec_ok;
long temp;
for (string str_it : vec) {
temp = 0;
for (char it : str_it) {
temp += pow(10, it - 'a');
}
if (temp == sl && (s != str_it || f)) {
vec_ok.push_back(str_it);
}
}
cout << vec_ok.size() << endl;
sort(vec_ok.begin(), vec_ok.end());
if (vec_ok.size() >= k)
cout << vec_ok[k - 1];
}
// 64 位输出请用 printf("%lld")
和标准的字符串不能相同,但是如果标准中包含连续两个或以上相同字符时,可以相同。