题解 | #查找兄弟单词#

查找兄弟单词

http://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68

C++ 双百解题
1、将输入字符串转化为数字,可以高效比较是否相等;
2、用 multiset 容器实现对兄弟单词的字典排序;
3、输出对应的数量,字符串;
#include<iostream>
#include<string>
#include<vector>
#include<set>
using namespace std;

bool Judge(string str1,string str2)
{
    if(str1.length()!=str2.length()){
        return false;
    }else{
        int len=str1.length();
        for(int i=0;i<len;++i){
            auto it=str2.find(str1[i]);
            if(it==str2.npos){
                return false;
            }
            str2[it]='0';
        }
        return true;
    }
}

int main()
{
    int num;
    while(cin>>num){
        vector<string> vs;
        string str;
        int index;
        string tmp;
        vector<int> vs1(num,0);
        for(int i=0;i<num;++i){
            cin>>tmp;
            vs.push_back(tmp);
            for(int j=0;j<tmp.length();++j){
                vs1[i]+=tmp[j]-'a';
            }
        }
        cin>>str>>index;
        
        int len=str.length();
        int gola=0;
        for(int i=0;i<len;++i){
            gola+=str[i]-'a';
        }
        multiset<string> ms;
        int count=0;
        for(int i=0;i<num;++i){
            if((gola==vs1[i])&&(str!=vs[i])){
                if(Judge(str,vs[i])){
                    ms.insert(vs[i]);
                    count++;
                }
            }
        }
        cout<<count<<endl;
        if(index<=count){
            auto msit=ms.begin();
            for(int i=1;i<index;++i){
                msit++;
            }
            cout<<*msit<<endl;
        }
    }
}


全部评论

相关推荐

11-27 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
10-07 20:48
门头沟学院 Java
不敢追175女神:可能是实习上着班想到后面还要回学校给导师做牛马,看着身边都是21-25的年纪,突然emo了了
点赞 评论 收藏
分享
挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务