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

掘金--创意标题匹配问题

问题描述

在广告平台中,为了给广告主一定的自由性和效率,允许广告主在创造标题的时候以通配符的方式进行创意提交。线上服务的时候,会根据用户的搜索词触发的 bidword 对创意中的通配符(通配符是用成对 {} 括起来的字符串,可以包含 0 个或者多个字符)进行替换,用来提升广告投放体验。例如:“{末日血战} 上线送 SSR 英雄,三天集齐无敌阵容!”,会被替换成“帝国时代游戏下载上线送 SSR 英雄,三天集齐无敌阵容!”。给定一个含有通配符的创意和n个标题,判断这句标题是否从该创意替换生成的。

测试样例

样例1:

输入:n = 4, template = “ad{xyz}cdc{y}f{x}e”, titles = [“adcdcefdfeffe”, “adcdcefdfeff”, “dcdcefdfeffe”, “adcdcfe”]
输出:“True,False,False,True”

样例2:

输入:n = 3, template = “a{bdc}efg”, titles = [“abcdefg”, “abefg”, “efg”]
输出:“True,True,False”

样例3:

输入:n = 5, template = “{abc}xyz{def}”, titles = [“xyzdef”, “abcdef”, “abxyzdef”, “xyz”, “abxyz”]
输出:“True,False,True,True,True”

思路分析

看到这个题的第一想法就是???
题目并没有说明数据范围,如果数据范围过大不上点手段的话,肯定无法a掉的:)
但是这道题只是简单难度,所以猜它的数据规模并不大,暴力大概率能过。但是写暴力感觉很无聊,脑袋中突然想到我们在实际开发过程中也会遇到这种匹配的问题,比如邮箱格式验证等。
所以我们这里可以使用正则表达式来解决,由于正则学的不咋样,这里求救了一下伟大的GPT之神,顺利a掉。
时间复杂度: O ( n ⋅ ( k ⋅ m + p + q ) ) O(n\cdot(k\cdot m+p+q)) O(n(km+p+q))
其中:
n n n:标题数量;
k k k:模板中的 {} 数量;
m m m:模板长度;
p p p:正则表达式长度;
q q q:标题长度。

#include <iostream>
#include <string>
#include <vector>
#include <regex>
using namespace std;bool isGeneratedTitle(const string& templateStr, const string& title) {// 将模板中的通配符 {} 替换为正则表达式 (.*)string pattern = templateStr;size_t pos = 0;// 替换所有的 {} 为 (.*)while ((pos = pattern.find("{", pos)) != string::npos) {size_t end = pattern.find("}", pos);if (end == string::npos) break; pattern.replace(pos, end - pos + 1, "(.*?)");pos += 4; }// 在正则表达式中添加开始和结束标记pattern = "^" + pattern + "$";// 使用正则表达式匹配regex re(pattern);return regex_match(title, re);
}std::string solution(int n, std::string template_,std::vector<std::string> titles) {// Please write your code herestring ans = "";for(int i = 0; i < n; ++i){if(ans.size() != 0){ans += ",";}if (isGeneratedTitle(template_, titles[i])){ans += "True";} else {ans += "False";}}return ans;
}
http://www.lryc.cn/news/524850.html

相关文章:

  • OBU和T-Box
  • 【PVE】Proxmox VE8.0+创建LXC容器安装docker
  • 一文大白话讲清楚webpack基本使用——11——chunkIds和runtimeChunk
  • Java 中的设计模式:经典与现代实践
  • DRG_DIP 2.0时代医院程序结构转型与数据结构优化研究
  • 一部手机如何配置内网电脑同时访问内外网
  • 国产低功耗带LCD驱动和触摸按键功能的MCU
  • XCP 协议基础
  • Swift 中 Codable 和 Hashable 的理解
  • 基于 WPF 平台实现成语游戏
  • 2024“博客之星”——我的博客成长与技术洞察
  • HTTPS协议简述
  • 前沿技术趋势洞察:2024年技术的崭新篇章与未来走向!
  • HTML常用属性
  • 电子应用设计方案100:智能家庭AI电风扇系统设计
  • ThinkPHP 8请求处理-获取请求对象与请求上下文
  • 工厂模式 - 工厂方法模式、抽象工厂模式
  • 2025年已过6%
  • C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合
  • UWB高精度定位技术在智能仓储中的应用
  • 计算机毕业设计hadoop+spark视频推荐系统 短视频推荐系统 视频流量预测系统 短视频爬虫 视频数据分析 视频可视化 视频大数据 大数据
  • 【AI编辑器】字节跳动推出AI IDE——Trae,专为中文开发者深度定制
  • CSDN 博客之星 2024:默语的技术进阶与社区耕耘之旅
  • 《探秘鸿蒙Next:非结构化数据处理与模型轻量化的完美适配》
  • async++库的使用示例
  • springboot基于微信小程序的手机银行系统
  • 25/1/22 算法笔记<ROS2> TF变换
  • Android系统开发(六):从Linux到Android:模块化开发,GKI内核的硬核科普
  • dp 凸优化
  • 详细介绍:Kubernetes(K8s)的技术架构(核心概念、调度和资源管理、安全性、持续集成与持续部署、网络和服务发现)