题解 | #查找兄弟单词#

查找兄弟单词

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

#include<iostream>
#include<string>
#include<vector>
#include<array>
#include<list>
using namespace std;

array<int, 128> xd;
array<int, 128> ss;
array<int, 128> arr(string s) {//统计各字符个数
    array<int, 128> a{ 0 };
    for (char c : s)
        a[c]++;
    return a;
}
int pd(string s) {//判断是否是兄弟单词
    ss = arr(s);
    if (ss == xd)
        return 1;
    return 0;
}
int main() {
    list<string> lis;
    vector<string> vec;
    int n, k; string s, x;
    getline(cin, s, ' '); n = stoi(s);
    for (int i = 0; i < n; i++) {
        getline(cin, s, ' ');
        vec.push_back(s);
    }
    getline(cin, x, ' ');
    getline(cin, s); k = stoi(s);
    //输入完成
    xd = arr(x);
    for (auto it : vec) {
        if (pd(it) && it != x)
            lis.push_back(it);
    }//得到兄弟字典,用list而不是map是为了能够添加重复的兄弟单词
    cout << lis.size() << '\n';
    lis.sort();//默认就是字典排序
    int num = 0;
    for (auto it : lis) {
        num++;
        if (num == k)
            cout << it;
    }
}

全部评论

相关推荐

12-08 15:35
浙江大学 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务