题解 | #查找兄弟单词#

查找兄弟单词

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;
}
全部评论

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务