题解 | #数据分类处理#
数据分类处理
https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd
#include <algorithm>
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
bool Issame(string rr,string ii)
{
for(int i=0;i<ii.size();i++)
{
for(int j=i+1;j<=ii.size();j++)
{
if(rr==ii.substr(i,j-i))
{
return true;
}
}
}
return false;
}
int main() {
int ni;
cin>>ni;
vector<int> I(ni);
for(int i=0;i<ni;i++)
{
cin>>I[i];
}
int nr;
cin>>nr;
vector<int> R(nr);
for(int i=0;i<nr;i++)
{
cin>>R[i];
}
sort(R.begin(), R.end());
unordered_map<int, int> map;
vector<vector<int>> res;
res.resize(nr);
int sum=0;
for(int i=0;i<nr;i++)
{
if(i!=0&&R[i]==R[i-1]) continue;
for(int j=0;j<ni;j++)
{
if(Issame(to_string(R[i]), to_string(I[j])))
{
if(map.find(R[i])!=map.end())
{
map[R[i]]++;
sum+=2;
}
else {
pair<int,int> p(R[i],1);
map.insert(p);
sum+=2;
sum+=2;
}
res[i].push_back(j);
}
}
//sum+=map[R[i]]*2;
}
cout<<sum<<" ";
for(int i=0;i<nr;i++)
{
if(i!=0&&R[i]==R[i-1]) continue;
if(map.find(R[i])!=map.end())
{
cout<<R[i]<<" "<<map[R[i]]<<" ";
for(int j=0;j<res[i].size();j++)
{
cout<<res[i][j]<<" "<<I[res[i][j]]<<" ";
}
}
}
}
// 64 位输出请用 printf("%lld")
