题解 | #查找兄弟单词#
查找兄弟单词
https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
#include <cstddef> #include <iostream> #include <ostream> #include <set> #include <string> #include <vector> #include <algorithm> using namespace std; bool ifBrotherWord(string s,string x) { if(s==x) return false; if(s.size()!=x.size()) return false; sort(s.begin(),s.end()); sort(x.begin(),x.end()); if(s==x) return true; return false; } int main() { string s; getline(cin, s); size_t pos = s.find(' '); int N = stoi(s.substr(0,pos)); s = s.substr(pos+1,s.size()); vector<string> vs(N); multiset<string> brother_word; for(int i = 0;i!=N;++i) { pos = s.find(' '); string str = s.substr(0,pos); vs[i] = str; s = s.substr(pos+1,s.size()); } pos = s.find(' '); string x = s.substr(0,pos); s = s.substr(pos+1,s.size()); int k = stoi(s); for(auto i:vs) { if(ifBrotherWord(i, x)) brother_word.emplace(i); } N = 0; cout<<brother_word.size()<<endl; for(const auto & i : brother_word) { if(N==k-1) { cout<<i; break; } else { ++N; } } return 0; } // 64 位输出请用 printf("%lld")
该用桶方法判断的