力扣11.22

44. 通配符匹配

给你一个输入字符串 (s) 和一个字符模式 § ,请你实现一个支持 ‘?’ 和 ‘*’ 匹配规则的通配符匹配:

  • ‘?’ 可以匹配任何单个字符。
  • ‘*’ 可以匹配任意字符序列(包括空字符序列)。
    判定匹配成功的充要条件是:字符模式必须能够 完全匹配 输入字符串(而不是部分匹配)。

数据范围

  • 0 <= s.length, p.length <= 2000
  • s 仅由小写英文字母组成
  • p 仅由小写英文字母、'?''*' 组成

分析

d p [ i ] [ j ] dp[i][j] dp[i][j]表示 p p p的前 i i i个是否能匹配 s s s的前 j j j个,状态转移如下

  • p [ i ] = = s [ j ] p[i]==s[j] p[i]==s[j],此时 d p [ i ] [ j ] = d p [ i − 1 ] [ j − 1 ] dp[i][j]=dp[i-1][j-1] dp[i][j]=dp[i1][j1]
  • KaTeX parse error: Expected 'EOF', got '&' at position 11: p[i]!=s[j]&̲&p[i]!='?'&&p[i…,此时 d p [ i ] [ j ] = f a l s e dp[i][j]=false dp[i][j]=false
  • p [ i ] = = ′ ? ′ p[i]=='?' p[i]==?,此时 d p [ i ] [ j ] = d p [ i − 1 ] [ j − 1 ] dp[i][j]=dp[i-1][j-1] dp[i][j]=dp[i1][j1]
  • p [ i ] = = ′ ∗ ′ p[i]=='*' p[i]==,此时由于 *可以匹配任意字符串,因此若 d p [ i − 1 ] [ 0 ] , d p [ i − 1 ] [ 1 ] . . . d p [ i − 1 ] [ j ] dp[i-1][0],dp[i-1][1]...dp[i-1][j] dp[i1][0],dp[i1][1]...dp[i1][j]中有成立的, d p [ i ] [ j ] dp[i][j] dp[i][j]就成立,反之不成立,为了优化复杂度,可以使用一个 p r e [ i ] [ j ] pre[i][j] pre[i][j]数组表示 p p p的前 i i i个匹配 s s s的至多前 j j j个字符是否成功,这样 d p [ i ] [ j ] = p r e [ i − 1 ] [ j ] dp[i][j]=pre[i-1][j] dp[i][j]=pre[i1][j]

代码

class Solution {
public:const static int N = 2005;bool dp[N][N];bool pre[N][N];bool isMatch(string s, string p) {if(s == "") {for(int j = 0; j < p.size(); j ++ ) {if(p[j] != '*') return false;}return true;}int n = s.size(), m = p.size();dp[0][0] = true;pre[0][0] = true;for(int i = 0; i < m; i ++ ) {if(i == 0 && p[i] == '*') {dp[i + 1][0] = true;pre[i + 1][0] = true;for(int j = 0; j < n; j ++ ) {dp[i + 1][j + 1] = true;pre[i + 1][j + 1] = true;}continue;} else if(i != 0 && p[i] == '*') {dp[i + 1][0] = dp[i][0];pre[i + 1][0] = dp[i + 1][0];}cout << dp[i + 1][0] << " ";for(int j = 0; j < n; j ++ ) {if(p[i] == s[j]) dp[i + 1][j + 1] = dp[i][j];else if(p[i] == '?') dp[i + 1][j + 1] = dp[i][j];else if(p[i] == '*') {dp[i + 1][j + 1] = pre[i][j + 1];}else dp[i + 1][j + 1] = false;pre[i + 1][j + 1] = (dp[i + 1][j + 1] || pre[i + 1][j]);// cout << dp[i + 1][j + 1] << " ";}// cout << endl;}return dp[m][n];}
};

3233. 统计不是特殊数字的数字数量

给你两个 正整数 l 和 r。对于任何数字 x,x 的所有正因数(除了 x 本身)被称为 x 的 真因数。

如果一个数字恰好仅有两个 真因数,则称该数字为 特殊数字。例如:

  • 数字 4 是 特殊数字,因为它的真因数为 1 和 2。
  • 数字 6 不是 特殊数字,因为它的真因数为 1、2 和 3。
    返回区间 [l, r] 内 不是 特殊数字 的数字数量。

数据范围

  • 1 <= l <= r <= 109

分析

可以发现,若是特殊数字,必须满足它是一个质数的完全平方,因此先使用欧拉筛获得全部质数,然后看看l到r中有多少个质数的平方即可

代码

class Solution {
public:const static int N =  1e5 + 5;int prime[N], cnt = 0;bool vis[N];void init(int n ) {vis[1] = true;for(int i = 2; i <= n; i ++ ) {if(!vis[i]) prime[++ cnt ] = i;for(int j = 1; prime[j] * i <= n; j ++ ) {vis[i * prime[j]] = true;if(i % prime[j] == 0) break;}}}int nonSpecialCount(int l, int r) {init(N - 5);int res = 0;for(int i = 1; i <= cnt; i ++ ) {if(prime[i] > sqrt(r)) break;if(prime[i] * prime[i] >= l && prime[i] * prime[i] <= r) {res ++ ;}}return r - l + 1 - res;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887152.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@RequestBody和前端的关系以及,如何在前后端之间传递数据?

RequestBody 注解在 Spring MVC 中用于将 HTTP 请求体中的数据绑定到控制器方法的参数上。为了更好地理解 RequestBody 和前端之间的关系&#xff0c;我们可以从以下几个方面进行探讨&#xff1a; 1. 请求体的格式 前端发送的请求体通常是一个 JSON 字符串&#xff0c;也可以…

全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS系统定制开发

8、RTOS系统定制开发 此处以在rtos/components/aw目录下创建一个简单的软件包为例&#xff0c;帮助客户了解RTOS环境&#xff0c;为RTOS系统定制开发提供基础。 RTOS环境下的软件包主要由三部分组成&#xff0c;源文件&#xff0c;Makefile&#xff0c;Kconfig&#xff0c;如下…

springboot实战(13)(@PatchMapping、@RequestParam、@URL、ThreadLocal线程局部变量)

目录 一、PATCH请求方式。 二、实现用户更新头像功能。 三、注解RequestParam。 四、注解URL。&#xff08;对传来的参数是否是合法地址进行校验&#xff09; 一、PATCH请求方式。 patch中文翻译&#xff1a;局部、小块。PATCH 请求主要用于对已存在的资源进行局部修改&#xf…

nvm安装node遇到的若干问题(vscode找不到npm文件、环境变量配置混乱、npm安装包到D盘)

问题一&#xff1a;安装完nvm后需要做哪些环境变量的配置&#xff1f; 1.打开nvm文件夹下的setting文件&#xff0c;设置nvm路径和安装node路径&#xff0c;并添加镜像。 root: D:\software\nvm-node\nvm path: D:\software\nvm-node\nodejs node_mirror: https://npmmirror.c…

《Shader 入门精要》学习笔记 茵蒂克丝

渲染流水线 《UnityShader入门精要》学习1_cpu设置渲染状态是什么-CSDN博客 UnityShader 基础 《UnityShader入门精要》学习2_unityshader入门精要2-CSDN博客 学习Shader需要的数学基础 《UnityShader入门精要》学习3_透视投影到-1到1空间-CSDN博客 实现一个简单的顶点/…

《C++20 新特性:为加密货币交易系统注入高效动力》

在加密货币风靡全球的今天&#xff0c;加密货币交易系统的高效性和安全性变得愈发关键。C20 的出现&#xff0c;为开发这类复杂系统带来了一系列令人瞩目的新特性&#xff0c;利用这些特性可以打造出更卓越的加密货币交易系统。 理解加密货币交易系统的需求 加密货币交易系统…

ansible操作随记(一)

0、其他 #shell模块 执行shell指令 ansible all -m shell -e "timedatectl show" ansible web -m shell -a "date"ansible web -m shell -a "echo * soft nofile 1048576 >> /etc/security/limits.conf" -b --become-meth…

面向FWA市场!移远通信高性能5G-A模组RG650V-NA通过北美两大重要运营商认证

近日&#xff0c;全球领先的物联网整体解决方案供应商移远通信宣布&#xff0c;其旗下符合3GPP R17标准的新一代5G-A模组RG650V-NA成功通过了北美两家重要运营商认证。凭借高速度、大容量、低延迟、高可靠等优势&#xff0c;该模组可满足CPE、家庭/企业网关、移动热点、高清视频…

深入理解 Spring Boot 的 CommandLineRunner 原理及使用

引言 在开发 Spring Boot 应用程序时&#xff0c;我们经常需要在应用程序启动后执行一些初始化任务&#xff0c;比如加载初始数据、连接外部服务、执行健康检查等。Spring Boot 提供了 CommandLineRunner 接口&#xff0c;使得这些任务的实现变得非常简单和直观。本文将深入探…

2024年11月21日Github流行趋势

项目名称&#xff1a;twenty 项目维护者&#xff1a;charlesBochet, lucasbordeau, Weiko, FelixMalfait, bosiraphael项目介绍&#xff1a;正在构建一个由社区支持的现代化Salesforce替代品。项目star数&#xff1a;21,798项目fork数&#xff1a;2,347 项目名称&#xff1a;p…

华科第一届网络安全挑战赛wp

文章目录 华科第一届网络安全挑战赛wpwebsecure_shellpyssrf misc一闪一闪亮晶晶 华科第一届网络安全挑战赛wp web secure_shell 考点&#xff1a;exec()无回显 先测试一下能不能执行 cmd1;sleep 4 发现反应了4秒&#xff0c;能执行 然后直接 cat /f* > 1.txt 最后访问/1.…

AWTK 最新动态:支持鸿蒙系统(HarmonyOS Next)

HarmonyOS是全球第三大移动操作系统&#xff0c;有巨大的市场潜力&#xff0c;在国产替代的背景下&#xff0c;机会多多&#xff0c;AWTK支持HarmonyOS&#xff0c;让AWTK开发者也能享受HarmonyOS生态的红利。 AWTK全称为Toolkit AnyWhere&#xff0c;是ZLG倾心打造的一套基于C…

docker 配置同宿主机共同网段的IP 同时通过通网段的另一个电脑实现远程连接docker

docker配置网络 #宿主机执行命令 ifconfig 查询对应的主机ip 子网掩码 网关地址 #[网卡名称]&#xff1a;inet[主机IP] netmask[子网掩码] broadcast[网关地址]这里需要重点关注&#xff1a;eno1[网卡名称]以及【192.168.31.225】网关地址 在宿主机执行docker命令创建一个虚拟…

使用 Elastic AI Assistant for Search 和 Azure OpenAI 实现从 0 到 60 的转变

作者&#xff1a;来自 Elastic Greg Crist Elasticsearch 推出了一项新功能&#xff1a;Elastic AI Assistant for Search。你可以将其视为 Elasticsearch 和 Kibana 开发人员的内置指南&#xff0c;旨在回答问题、引导你了解功能并让你的生活更轻松。在 Microsoft AI Services…

React (三)

文章目录 项目地址十二、性能优化12.1 使用useMemo避免不必要的计算12.2 使用memo缓存组件,防止过度渲染12.3 useCallBack缓存函数12.4 useCallBack里访问之前的状态(没懂)十三、Styled-Components13.1 安装13.2给普通html元素添加样式13.3 继承和覆盖样式13.4 给react组件添…

Etcd 框架

基本了解 客户端、长连接与租约的关系 客户端对象 etcd的客户端对象是用户与etcd服务进行交互的主要接口&#xff0c;主要功能就是存储、通知和事务等功能访问 键值存储&#xff1a;客户端通过put 和 get操作存储数据&#xff1b;数据存储在etcd的层级化键值数据库中监听器&a…

mock.js:定义、应用场景、安装、配置、使用

前言&#xff1a;什么是mock.js&#xff1f; 作为一个前端程序员&#xff0c;没有mockjs你不感觉很被动吗&#xff1f;你不感觉你的命脉被后端那个男人掌握了吗&#xff1f;所以&#xff0c;我命由我不由天&#xff01;学学mock.js吧&#xff01; mock.js 是一个用于生成随机…

IDEA2023 创建SpringBoot项目(一)

一、Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。 二、快速开发 1.打开IDEA选择 File->New->Project 2、…

教育数字化转型新时代:探索智慧学习空间的无限可能

在信息技术的浪潮推动下&#xff0c;教育行业正迎来一场前所未有的变革。这场变革的核心在于教育数字化转型&#xff0c;它要求我们重新审视和构建传统的学习模式&#xff0c;以适应快速变化的社会需求。在这个过程中&#xff0c;智慧学习空间作为数字化转型的重要成果&#xf…

LSTM原理解读与实战

在RNN详解及其实战中&#xff0c;简单讨论了为什么需要RNN这类模型、RNN的具体思路、RNN的简单实现等问题。同时&#xff0c;在文章结尾部分我们提到了RNN存在的梯度消失问题&#xff0c;及之后的一个解决方案&#xff1a;LSTM。因此&#xff0c;本篇文章主要结构如下&#xff…