题解 | 查找兄弟单词
#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")
和标准的字符串不能相同,但是如果标准中包含连续两个或以上相同字符时,可以相同。