题解 | #数据分类处理#

数据分类处理

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

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

int main() {
    int num_I, num_R;
    vector<int> I;
    vector<int> R;
    vector<int> output; 
    int flag = 0;

    cin >> num_I;

    for (int i = 0; i < num_I; ++i) {
        int temp_I;
        cin >> temp_I;
        I.push_back(temp_I);
    }

    cin >> num_R;

    for (int i = 0; i < num_R; ++i) {
        int temp_R;
        cin >> temp_R;
        R.push_back(temp_R);
    }

    sort(R.begin(), R.end());//对R_num进行处理:排序、去除重复值
    auto last = unique(R.begin(), R.end());
    R.erase(last, R.end());

    int num = output.size();//记录output的长度,方便插入R_num和R_num出现的次数
    for (int R_num : R) {
        int i = -1,j = 0;
        for (int I_num : I) {
            i++;//记录这是第几个I_num
            string temp_I = to_string(I_num);//将R_num,I_num转换成字符型,判断R_num是否在I_num中出现
            string temp_R = to_string(R_num);
            if (temp_I.find(temp_R) != string::npos) {
                if (flag == 0) {
                    flag = 1;
                }
                j++;
                output.push_back(i);
                output.push_back(I_num);
            }   
        }
        if (j > 0){//记录R_num在几个I_num中出现过
            output.insert(output.begin()+num, j);
        }
        if (flag == 1) {//flag记录之前是否向output中插入过本次循环的R_num
            output.insert(output.begin()+num, R_num);
            flag = 0;
        }
        num = output.size();//更新output的长度
    }

    output.insert(output.begin(), output.size());
    for (const auto& x : output) {
        cout << x<< " " ;
    }
    return 0;
}

全部评论

相关推荐

03-12 15:34
已编辑
北京邮电大学 Java
呓语0613:老哥你这黑马点评改造是在哪里看的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务