题解 | #查找兄弟单词#

查找兄弟单词

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

#include <iostream>
#include <vector>
#include <string>
#include <set>
using namespace std;

bool isBrother(const string &s1, const string&s2) {
    if(s1.length() != s2.length() || s1 == s2) return false;
    multiset<char> s1_set;
    for(char c : s1) {
        s1_set.insert(c);
    }
    for(char c : s2) {
        if(s1_set.find(c) != s1_set.end()) s1_set.erase(s1_set.find(c));
        else return false;
    }
    return true;
}

int main() {
    int n, k;
    string tar;
    cin >> n;
    vector<string> dic(n); // 字典
    for(int i=0; i<n; ++i) cin >> dic[i];
    cin >> tar >> k;

    multiset<string> broWords;  // 利用set排序
    for(int i=0; i<n; ++i) {
        if(isBrother(tar, dic[i])) broWords.insert(dic[i]);
    }
    int cnt = 1;
    cout << broWords.size() << endl;
    for(auto word : broWords) {
        if(k == cnt) {
            cout << word;
            break;
        } 
        ++cnt;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务