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