题解 | 数据分类处理

数据分类处理

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

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

string itos(int num)
{
    string output;
    if(num <= 0){
        return "0";
    }
    while(num){
        output.push_back(num % 10 + '0');
        num = num / 10;
    }
    for(size_t i = 0; i < output.size() / 2 ; i++){
        swap(output[i], output[output.size() - i - 1]);
    }
    //cout << output << endl;
    return output;
}

class output_data
{
public:
    int index;
    string data_str;
};

int main() 
{
    int total_num;
    cin >> total_num;
    vector<string> datas;
    vector<int> rules;
    for(size_t i = 0; i < total_num; i++){
        string input;
        cin >> input;
        datas.push_back(input);
    }

    int rule_num;
    cin >> rule_num;
    for(size_t i = 0; i < rule_num; i++){
        int input;
        cin >> input;
        static bool no_need_to_push_back = false;
        for(auto& num : rules){
            if(num == input){
                no_need_to_push_back = true;
            }
        }

        if(no_need_to_push_back){
            no_need_to_push_back = false;
        }else{
            rules.push_back(input);
        }
    }

    sort(rules.begin(), rules.end());

    int output_count = 0;
    int output_rule = -1;
    int output_match = 0;
    vector<output_data> vec;
    size_t i = 0;
    size_t j = 0;
    vector<int> print_data;
    for(i = 0; i < rules.size(); i++){
        char num_char = rules[i] + '0';
        string num_str = itos(rules[i]);
        //cout << num_str << endl;
        for(j = 0; j < datas.size(); j++){
            string data_str = datas[j];
            if(data_str.find(num_str) != string::npos){
                
                output_rule = stoi(num_str);
                output_count++;
                 output_data data;
                data.index = j;
                data.data_str = datas[j];
                vec.push_back(data);
                output_match++;
                output_count++;
            }
           
                   
                  
            
        }
        if(output_rule == -1) continue;
        print_data.push_back(output_rule);
        //cout << output_rule << " ";
        output_rule = -1;
        print_data.push_back(output_match);
        //cout << output_match << " ";
        output_match = 0;
        for(size_t i = 0; i < vec.size(); i++){
            print_data.push_back(vec[i].index);
            print_data.push_back(stoi(vec[i].data_str));
            //cout << vec[i].index << " ";
            //cout << vec[i].data_str << " ";
        }
        vec.clear();
    }
    cout << print_data.size() << " ";
    for(size_t i = 0; i < print_data.size(); i++){
        cout << print_data[i] << " ";
    }
    // for(size_t i = 0; i < vec.size(); i++){
    //     cout << vec[i].index << " " << vec[i].data_str << endl;
    // }

}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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