题解 | #数据分类处理#

数据分类处理

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

#include <iostream>
using namespace std;
#include <map>
#include <string>
#include <vector>
int main() {
    int numI;//I输入计数
    int numR;//R输入计数
    int numOut = 0;//输出计数blank

    string str;
    map<int, string>
    mapI; //储存I信息的map,其int为数组下标,string为其数字的字符串
    map<int, string>
    mapR; //储存R信息的map,其int和string都为其值,用于自动排序和去重
    getline(cin, str, ' ');
    numI = stoi(str);
    for (int i = 0; i < numI ; i++) {
        if (i != numI - 1 ) {
            getline(cin, str, ' ');
        } else {
            getline(cin, str, '\n');
        }
        mapI[i] = str;
    }

    getline(cin, str, ' ');
    numR = stoi(str);
    int r;
    for (int i = 0; i < numR; i++) {

        if (i != numR - 1 ) {
            getline(cin, str, ' ');
        } else {
            getline(cin, str, '\n');
        }
        r = stoi(str);
        if (mapR.count(r) == 0) {
            mapR[r] = str;
        }
    }

    map<int, map<int, string>> resMap;
    map<int, string> resI;

    for (auto& itR : mapR) {
        resI.clear();
        for (auto& itI : mapI) {
            if ((itI.second).find(itR.second) != -1) {
                //当子串查找成立时
                resI.insert(pair<int, string>(itI.first, itI.second));
            }
        }
        resMap.insert(pair<int, map<int, string>>(itR.first, resI));

        if (!resI.empty()) {
            numOut = numOut + 2 + resI.size() * 2;
        }

    }

    cout << numOut << ' ';

    for (auto& itRes : resMap) {
        if (!itRes.second.empty()) {
            cout << itRes.first << ' ';
            cout << itRes.second.size() << ' ';
            for (auto& itResI : itRes.second) {
                cout << itResI.first << ' ' << itResI.second << ' ';
            }
        }

    }
}

用好数据结构,这题其实不难,要认真看清题目。

利用map的特性来对R的数据进行自动排序和去重,利用string的find函数查找子串。

要注意的是,输入这次是分2行的,做好换行符的读取,否则会出现一些bug

华为机试刷题记录 文章被收录于专栏

记录一下手打代码的解题思路方便复习

全部评论

相关推荐

搞机墨镜猫:科研和竞赛全写成项目经历,另外你项目涉及到的技术栈太杂了,应该对不同岗位强调写不同的技术栈,寒假应该不太好找短期,长期明年3,4月好找很多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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