当前位置: 首页 > article >正文

HJ25 数据分类处理【牛客网】

文章目录

  • 零、原题链接
  • 一、题目描述
  • 二、测试用例
  • 三、解题思路
  • 四、参考代码

零、原题链接


HJ25 数据分类处理

一、题目描述

在这里插入图片描述
在这里插入图片描述

二、测试用例

在这里插入图片描述

三、解题思路

  1. 基本思路:
      首先理解题目,题目要求对规则集先进行排序,然后去重,这一步我们可以使用 sort + 双指针解决;然后题目要求使用新的规则集去匹配数据集,匹配规则为:如果数据集元素 e 存在连续子串等于规则 r ,则说明元素 e 符合规则 r 。题目要求输出每个规则的符合的元素有哪些。对于规则匹配,可以用正则表达式或者自己写。
  2. 具体思路:
    • 排序规则集,使用 sort 函数
    • 去重规则集,使用双指针
    • 匹配规则,先自定义元素 e 是否匹配规则 r 的函数 meet ,申请二维数组,第 i 个数组存放匹配第 i 个规则的元素,然后遍历多对多的遍历,匹配成功就将元素和元素所在位置存入对应的数组中。
    • 按题目要求输出。

四、参考代码

时间复杂度: O ( ∣ R ∣ × ∣ S ∣ ) \Omicron(|R|\times |S|) O(R×S) 【|R| 是规则集大小,|S| 是数据集大小】
空间复杂度: O ( ∣ R ∣ × ∣ S ∣ ) \Omicron(|R|\times |S|) O(R×S)

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;bool meet(const string& x, const string& y) {for (int i = 0; i < x.length(); i++) {if (x[i] == y[0] && i + y.length() - 1 < x.length()) {if (x.substr(i, y.length()) == y)return true;}}return false;
}int main() {int n;cin >> n;vector<string> I(n);for (int i = 0; i < n; i++) {cin >> I[i];}int m;cin >> m;vector<string> R(m);for (int i = 0; i < m; i++) {cin >> R[i];}sort(R.begin(), R.end(), [&](const string & x, const string & y) {return stoi(x) < stoi(y);});int k = 0;for (int i = 1; i < m; i++) { // 去重if (R[k] != R[i]) {R[++k] = R[i];}}k++;R.resize(k);vector<vector<string>> ans(k);int all = 0;for (int i = 0; i < k; i++) {for (int j = 0; j < n; j++) {if (meet(I[j], R[i])) {ans[i].emplace_back(to_string(j));ans[i].emplace_back(I[j]);}}if (ans[i].size())all += ans[i].size() + 2;}cout << all << ' ';for (int i = 0; i < k; i++) {if (ans[i].size()) {cout << R[i] << ' ' << (ans[i].size() >> 1) << ' ';for (int j = 0; j < ans[i].size(); j++) {cout << ans[i][j] << ' ';}}}
}
// 64 位输出请用 printf("%lld")
http://www.lryc.cn/news/2393558.html

相关文章:

  • spring-boot redis lua脚本实现滑动窗口限流
  • USB MSC
  • css实现文字渐变
  • FART 自动化脱壳框架一些 bug 修复记录
  • 基于Flask实现豆瓣Top250电影可视化
  • More SQL(Focus Subqueries、Join)
  • 项目部署react经历
  • 从图像处理到深度学习:直播美颜SDK的人脸美型算法详解
  • 智能教育个性化学习路径规划系统实战指南
  • spark- ResultStage 和 ShuffleMapStage介绍
  • zTasker一款Windows自动化软件,提升效率:大小仅有10MB,免费无广告
  • 人工智能100问☞第34问:什么是语音识别与合成?
  • 最大流-Ford-Fulkerson增广路径算法py/cpp/Java三语言实现
  • 怎么从一台电脑拷贝已安装的所有python第三方库到另一台
  • 【测试】Bug和用例
  • 缓存穿透、缓存击穿、缓存雪崩目前记录(纯日记)
  • 鸿蒙OS的5.0.1.120版本体验怎么样?
  • 使用ssh-audit扫描ssh过期加密算法配置
  • 前端工程化 Source Map(源码映射)详解
  • 2025.05.28-华为暑期实习第二题-200分
  • Java+Playwright自动化-2-环境准备与搭建-基于Maven
  • 由sigmod权重曲线存在锯齿的探索
  • 二、OpenCV图像处理-图像处理
  • UPS的工作原理和UPS系统中旁路的作用
  • 麒麟系统 Linux(aarch64处理器)系统java项目接入海康SDK问题
  • 深入理解数组索引:原理、应用与优化
  • 【洛谷P9303题解】AC- [CCC 2023 J5] CCC Word Hunt
  • Python图片格式批量转换器教程
  • 从公开到私密:重新思考 Web3 的数据安全
  • 计算机网络常见体系结构、分层必要性、分层设计思想以及专用术语介绍