题解 | 查找兄弟单词
查找兄弟单词
https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
#include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; bool dict_compare(string a, string b) { size_t min_len = min(a.size(), b.size()); for(size_t i = 0; i < min_len; i++){ if(a[i] != b[i]){ return a[i] < b[i]; } } return a.size() < b.size(); } int main() { int string_num; cin >> string_num; vector<string> string_vec; for(size_t i = 0; i < string_num; i++){ string s; cin >> s; if(s.size() >= 1 && s.size() <= 10){ string_vec.push_back(s); } } sort(string_vec.begin(), string_vec.end(), dict_compare); // for(string s : string_vec){ // cout << s << endl; // } string x; cin >> x; int k; cin >> k; vector<string> bro_vec; string sorted_x = x; sort(sorted_x.begin(), sorted_x.end()); size_t count = 0; for(string s : string_vec){ if(s.size() != x.size()){ continue; } if(s == x){ continue; } string sorted_s = s; sort(sorted_s.begin(), sorted_s.end()); if(sorted_s == sorted_x){ count++; bro_vec.push_back(s); } } sort(bro_vec.begin(), bro_vec.end(), dict_compare); cout << count << endl; // for(auto s : bro_vec){ // cout << s << endl; // } if(k <= bro_vec.size()){ cout << bro_vec[k -1] << endl; } } // 64 位输出请用 printf("%lld")