题解 | #查找兄弟单词#

查找兄弟单词

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

#include<bits/stdc++.h>
#include <vector>
using namespace std;

bool isbrother(string a, string b, vector<int> record) {
    if (a.size() != b.size())return false;
    if (a == b)return false;

    for (int i = 0; i < b.size(); i++) {
        record[b[i] - 'a']--;
    }
    for (int i = 0; i <= 25; i++) {
        if (record[i] != 0)return false;
    }
    return true;
}

int main() {
    int n;
    cin >> n;
    vector<string> strs(n);
    for (int i = 0; i < n; i++)cin >> strs[i];

    string a;
    cin >> a;

    int k;
    cin >> k;

    vector<int> record(26, 0);
    for (int i = 0; i < a.size(); i++) {
        record[a[i] - 'a']++;
    }

    vector<string> ret;
    for (int i = 0; i < strs.size(); i++) {
        if (isbrother(a, strs[i], record))ret.emplace_back(strs[i]);
    }

    cout << ret.size() << endl;
    if (ret.size() >= k) {
        sort(ret.begin(), ret.end());
        cout << ret[k - 1] << endl;
    }
    return 0;
}

全部评论

相关推荐

09-25 00:00
已编辑
电子科技大学 Java
球球与墩墩:这不是前端常考的对象扁平化吗,面试官像是前端出来的 const flattern = (obj) => { const res = {}; const dfs = (curr, path) => { if(typeof curr === 'object' && curr !== null) { const isArray = Array.isArray(curr); for(let key in curr) { const newPath = path ? isArray ? `${path}[${key}]` : `${path}.${key}` : key; dfs(curr[key], newPath); } } else { res[path] = curr } } dfs(obj); return res; }
查看3道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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