题解 | 数据分类处理

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>

// 判断一个字符串是否是另一个字符串的连续子串
bool isSubstring(const std::string& str, const std::string& subStr) {
    return str.find(subStr) != std::string::npos;
}

int main() {
    int n;
    std::cin >> n;
    std::vector<int> dataset(n);
    for (int i = 0; i < n; ++i) {
        std::cin >> dataset[i];
    }

    int m;
    std::cin >> m;
    std::set<int> rulesSet;  // 使用 set 自动排序并去重
    for (int i = 0; i < m; ++i) {
        int rule;
        std::cin >> rule;
        rulesSet.insert(rule);
    }

    std::vector<int> rules(rulesSet.begin(), rulesSet.end());

    std::vector<int> output;
    for (int rule : rules) {
        std::vector<std::pair<int, int>> matches;
        std::string ruleStr = std::to_string(rule);
        for (int i = 0; i < n; ++i) {
            std::string dataStr = std::to_string(dataset[i]);
            if (isSubstring(dataStr, ruleStr)) {
                matches.emplace_back(i, dataset[i]);
            }
        }

        if (!matches.empty()) {
            output.push_back(rule);
            output.push_back(matches.size());
            for (const auto& match : matches) {
                output.push_back(match.first);
                output.push_back(match.second);
            }
        }
    }

    std::cout << output.size();
    for (int num : output) {
        std::cout << " " << num;
    }
    std::cout << std::endl;

    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务