题解 | #查找兄弟单词#
查找兄弟单词
http://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
用C++查找兄弟单词
这道题很坑
代码做了详细注释,直接上代码
#include <iostream> #include <string> #include <algorithm> #include <functional> #include <vector> using namespace std; int main() { int num; while(cin >> num)//接收输入字符串个数 { vector<string> get; for(int i=0;i<num;++i) { string str; cin>>str; get.push_back(str); } string std;//接收待查找单词 cin >> std; int pos;//接收输出位置 cin >> pos; string a=std; sort(a.begin(), a.end()); vector<string> all; if(a!=std)//将除了带查找单词以外的所有兄弟字符插入!!!!注意细节 all.push_back(a); while(next_permutation(a.begin(),a.end())) { if(a!=std) all.push_back(a); } vector<string> ret; for(int i=0;i<num;i++)//从输入字符串中查找兄弟字符 { if(find(all.begin(), all.end(), get[i])!=all.end()) { ret.push_back(get[i]);//找到则插入 } } sort(ret.begin(), ret.end());//将找到的兄弟字符串进行字典排序 cout<<ret.size()<<endl;//输出一共找到了多少个兄弟字符 if(pos < ret.size())//如果输出位置不合理,则不输出!!!! cout<<ret[pos-1]<<endl; } return 0; }