题解 | #查找兄弟单词#

数据分类处理

http://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd

#include<bits/stdc++.h>
using namespace std;
static bool cmp(string &a, string &b) {
    int i;
    for (i = 0; i < a.size() && i < b.size(); i++) {
        if (a[i] < b[i]) {
            return true;
        }
        else if (a[i] > b[i]) {
            return false;
        }
    }
    if (a.size() < b.size()) return true;
    else return false;
}
void func(vector<string> &vec, string &target, int targetNum) {
    vector<int> label(26, 0);
    vector<string> bro;
    int sum = 0;
    for (auto &ch : target) {
        label[ch - 'a']++;
        sum++;
    }
    for (auto str1 : vec) {
        vector<int> labelTemp = label;
        bool isBro = true;
        if (str1 == target || str1.size() != target.size()) {
            continue;
        }
        for (auto ch : str1) {
            labelTemp[ch - 'a']--;
            if(labelTemp[ch - 'a'] < 0) {
                isBro = false;
                break;
            }
        }
        if (isBro) {
            bro.push_back(str1);
        }
    }
    sort(bro.begin(), bro.end(), cmp);
    cout << bro.size() << endl;
    if (bro.size() >= targetNum) {
        cout << bro[targetNum - 1]<<endl;
    }
}
int main() {
    int n;
    vector<string> vec;
    string target;
    int targetNum;
    while (cin >> n) {
        while (n--) {
            string str;
            cin >> str;
            vec.push_back(str);
        }
        cin >> target;
        cin >> targetNum;
    }
    func(vec,target, targetNum);
}
全部评论

相关推荐

10-31 14:54
已编辑
门头沟学院 算法工程师
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务