题解 | #数据分类处理#
数据分类处理
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; }