题解 | #数据分类处理#

数据分类处理

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

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

//用于记录每次遍历vec_I的情况
//每次的情况需要分开存储
int rec(string s,vector<string> vec,vector<string>& v){
    int flag = 0;//标记是第几次出现相同
    for(int i=0; i<vec.size(); i++){
        //不是vec[i].find(),是find()
        int pos = vec[i].find(s);
        if(pos != vec[i].npos){
        //找到了,记录下来
            flag++;
            v.push_back(to_string(i));
            v.push_back(vec[i]);
        }
        else{
            continue;
        }
    }
    return flag;
}

int main() {
    int n_I , n_R;
    vector<string> vec_I;
    set<int> set_R;
    cin >> n_I;
    while(n_I--){
        string si;
        cin >> si;
        vec_I.push_back(si);
    }
    cin >> n_R;
    while(n_R--){
        //如果sr是string类型的话,就不能正确排序
        int sr;
        cin >> sr;
        set_R.insert(sr);
    }
    //从vec_I中找包含了set_R中内容的元素,输出
    //遍历set_R中元素,找有没有重合的,没有跳过
    vector<string> res;
    for(auto it=set_R.begin(); it != set_R.end(); it++){
        vector<string> v;
        string temp = to_string(*it);
        int flag = rec(temp,vec_I,v);//返回有几个重合的元素
        //再将结果放入最终的vector中
        if(flag == 0){
            continue;
        }
        res.push_back(temp);
        res.push_back(to_string(flag));
        for(int j=0; j<v.size(); j++){
            res.push_back(v[j]);
        }
    }
    cout << res.size() << ' ';
    for(int k=0;k<res.size();k++){
        cout << res[k] << ' ';
    }
    
    return 0;
}



全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务