题解 | #查找兄弟单词#
查找兄弟单词
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;
}
查看19道真题和解析