题解 | #数据分类处理#

数据分类处理

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")

全部评论

相关推荐

点赞 评论 收藏
分享
A_SOUL_Off...:疑似加班加出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务