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

Leetcode 2953. Count Complete Substrings

  • Leetcode 2953. Count Complete Substrings
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:2953. Count Complete Substrings

1. 解题思路

这一题麻烦的点就在于说有两个限制条件,但是好的点在于说这两个限制条件事实上是相互独立的。

因此,我们可以通过第二个限制条件将字符串进行分段,此时目标子串必然在各个分段字符串之内,且此时我们只需要考虑第一个限制条件即可。

而对于第一个限制条件,一个简单的思路就是对26个字符建一个counter,然后分别对每一个位置作为起始点的情况进行考察。

显然,如果要成立,那么目标字符串长度一定是 k k k的倍数,且如果任何一个字符的个数超过 k k k时就一定不成立。

但是,直接这样的实现我们发现会出现超时,因此我们加了一些奇技淫巧用于优化算法,主要就是对于只有一个字符的情况进行了一下优化,因为如果只有一个字符的话,那么可能的个数就一定是 n − k + 1 n-k+1 nk+1个。

2. 代码实现

给出python代码实现如下:

class Solution:def countCompleteSubstrings(self, word: str, k: int) -> int:def count_complete(s):n = len(s)if n < k:return 0if len(set(s)) == 1:return n-k+1cnt = [[0 for _ in range(26)] for _ in range(n+1)]for i, ch in enumerate(s):for j in range(26):cnt[i+1][j] = cnt[i][j]cnt[i+1][ord(ch) - ord('a')] += 1ans = 0for i in range(n-k+1):j = i+kwhile j <= n:diff = [y-x for x, y in zip(cnt[i], cnt[j])]if any(x > k for x in diff):breakif all(x == k or x == 0 for x in diff):ans += 1j += kreturn ansidx = 0i, n = 0, len(word)ans = 0while i < n-1:if abs(ord(word[i]) - ord(word[i+1])) > 2:ans += count_complete(word[idx:i+1])idx = i+1i += 1ans += count_complete(word[idx:])return ans

提交代码评测得到:耗时6583ms,占用内存582.8MB。

相关文章:

Leetcode 2953. Count Complete Substrings

Leetcode 2953. Count Complete Substrings 1. 解题思路2. 代码实现 题目链接&#xff1a;2953. Count Complete Substrings 1. 解题思路 这一题麻烦的点就在于说有两个限制条件&#xff0c;但是好的点在于说这两个限制条件事实上是相互独立的。 因此&#xff0c;我们可以通…...

【Python-第三方库-pywin32】随笔- Python通过`pywin32`获取窗口的属性

Python通过pywin32获取窗口的属性 基础 获取所有窗口的句柄 【代码】 import win32guidef get_all_windows():hWnd_list []win32gui.EnumWindows(lambda hWnd, param: param.append(hWnd), hWnd_list)print(hWnd_list)return hWnd_list【结果】 获取窗口的子窗口句柄 【代…...

Flask使用线程异步执行耗时任务

1 问题说明 1.1 任务简述 在开发Flask应用中一定会遇到执行耗时任务&#xff0c;但是Flask是轻量级的同步框架&#xff0c;即在单个请求时服务会阻被塞&#xff0c;直到任务完成&#xff08;注意&#xff1a;当前请求被阻塞不会影响到其他请求&#xff09;。 解决异步问题有…...

zabbix监控nginx

zabbix是什么 web界面提供的一种可视化的监控服务软件 以分布式的方式系统监控以及网络监控&#xff0c;硬件监控等等开源的软件 zabbix的架构 1、c/s模式 客户端和服务端&#xff0c;zabbix server服务端 zabbix agent 客户端 2、通过B/S B是浏览器 S服务端&#xff0c;通…...

【CVE-2023-49103】ownCloud graphapi信息泄露漏洞(2023年11月发布)

漏洞简介 ownCloud owncloud/graphapi 0.2.x在0.2.1之前和0.3.x在0.3.1之前存在漏洞。graphapi应用程序依赖于提供URL的第三方GetPhpInfo.php库。当访问此URL时&#xff0c;会显示PHP环境的配置详细信息&#xff08;phpinfo&#xff09;。此信息包括Web服务器的所有环境变量&a…...

可视化数据库管理客户端:Adminer

简介&#xff1a;Adminer&#xff08;前身为phpMinAdmin&#xff09;是一个用PHP编写的功能齐全的数据库管理工具。与phpMyAdmin相反&#xff0c;它由一个可以部署到目标服务器的文件组成。Adminer可用于MySQL、PostgreSQL、SQLite、MS SQL、Oracle、Firebird、SimpleDB、Elast…...

Python----字典练习

相关链接&#xff1a;Python---字典的增、删、改、查操作_python中字典的增删改查-CSDN博客 Python---字典---dict-CSDN博客 Python---引用变量与可变、非可变类型-CSDN博客 重点&#xff1a; 字典中的 key &#xff08;就是键&#xff09;可以是很多数据类型&#xff08;…...

CentOS 部署 WBO 在线协作白板

1&#xff09;WBO 白板工具介绍 1.1&#xff09;WBO 白板简介 WBO 是一个自由和开源的在线协作白板。它允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用户实时更新&#xff0c;并且状态始终保持。它可以用于许多不同的目的&#xff0c;包括艺术、娱乐、设计和…...

qt-C++笔记之QStringList

qt-C笔记之QStringList —— 杭州 2023-12-03 文章目录 qt-C笔记之QStringList1.1.《Qt官方文档》第一部分翻译&#xff1a;继承自QList\<QString\>-初始化-添加字符串1.2.迭代字符串1.3.join()和split()1.4.filter()1.5.lastIndexOf()1.6.indexOf()1.7.replaceInString…...

ply前端

ply 是 eBPF 的 front-end 前端工具之一&#xff0c;专为 embedded Linux systems 开发&#xff0c;采用 C 语言编写&#xff0c;只需 libc 和内核支持 BPF 就可以运行&#xff0c;不需要外部 kernel 模块&#xff0c;不需要 LLVM&#xff0c;不需要 python。 ply 由瑞典工程师…...

U盘不仅能在电脑上使用,在手机上也可使用,包括安卓和苹果手机,但苹果的较特殊

许多最好的安卓手机都使用USB-C端口在电脑上充电和来回传输文件,但如果你需要给老板发电子邮件的文件放在闪存驱动器或全尺寸SD卡上呢? 幸运的是,使用廉价的适配器电缆,你可以将USB加密狗或读卡器直接连接到手机上。你甚至可以直接使用USB-C闪存驱动器,以实现更轻松的过程…...

面试数据库八股文十问十答第二期

面试数据库八股文十问十答第二期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1.MySQL的主从复制 MySQL的主从复制是什么&#xff1f;MySQL主从复制是一种常见的…...

【LeetCode】每日一题 2023_12_2 拼车(模拟/差分)

文章目录 刷题前唠嗑题目&#xff1a;拼车题目描述代码与解题思路学习大佬题解 刷题前唠嗑 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 题目&#xff1a;拼车 题目链接&#xff1a;1094. 拼车 题目描述 代码与解题思路 func carPooling(trips [][]int…...

网络和Linux网络_7(传输层)UDP和TCP协议(端口号+确认应答+超时重传+三次握手四次挥手)

目录 1. 重看端口号 1.1 端口号的概念 1.2 端口号的划分 2. 重看UDP协议 2.1 UDP协议格式 2.2 UDP的特点 3. 重看TCP协议 3.1 TCP协议格式 3.2 TCP的解包分用 3.3 TCP的可靠性及机制 3.3.1 确认应答ACK机制 3.3.2 超时重传机制 3.3.3 连接管理机制&#xff08;三次…...

KALI LINUX安全审核

预计更新 第一章 入门 1.1 什么是Kali Linux&#xff1f; 1.2 安装Kali Linux 1.3 Kali Linux桌面环境介绍 1.4 基本命令和工具 第二章 信息收集 1.1 网络扫描 1.2 端口扫描 1.3 漏洞扫描 1.4 社交工程学 第三章 攻击和渗透测试 1.1 密码破解 1.2 暴力破解 1.3 漏洞利用 1.4 …...

2023-12-03-解决libxkbcommon库编译完后图像界面不能使用键盘

layout: post # 使用的布局&#xff08;不需要改&#xff09; title: Ubuntu修复 # 标题 subtitle: 解决libxkbcommon库编译完图形界面不能使用键盘 #副标题 date: 2023-12-03 # 时间 author: BY ThreeStones1029 # 作者 header-img: img/about_bg.jpg #这篇文章标题背景图片 c…...

vue el-table表格中每行上传文件(上传简历)操作

1、HTML中 <el-table :data"formInfo.userListDto" border stripe max-height"400"><el-table-column type"index" label"序号" width"50"> </el-table-column><el-table-column prop"realName&q…...

Python批量图像处理--图片重命名、图片旋转

图像批量重命名&#xff1a; 使用batch_rename_images函数实现对多个文件夹下面的图片进行重命名操作 先检查文件名的后缀&#xff0c;使用了.endswith()方法来判断文件名是否以.jpg、.png或.JPG结尾&#xff0c;判断是否为图片文件 然后构造新的文件路径new_filepath&#…...

第五天 用Python批量处理Excel文件,实现自动化办公

用Python批量处理Excel文件&#xff0c;实现自动化办公 一、具体需求 有以下N个表&#xff0c;每个表的结构一样&#xff0c;如下&#xff1a; 需要把所有表数据汇总&#xff0c;把每个人的得分、积分分别加起来&#xff0c;然后按总积分排名&#xff0c;总积分一致时&#xff…...

mybatis整合(手动添加jar包方式)

操作步骤 创建数据库 建立user表 放入数据 1、创建javaweb工程并添加Jar包 用到的jar包 junit 用于测试 mybatis框架&#xff1a;mybatis-3.5.9.jar mysql数据库&#xff1a;mysql-connector-java-8.0.28.jar 2、添加MyBatis核心配置文件 <?xml version"1.0"…...

手把手教你用QGIS加载并可视化2025年北京OSM路网SHP数据(WGS84坐标系)

零基础实战&#xff1a;QGIS加载OSM路网数据的完整可视化流程 第一次打开QGIS时&#xff0c;面对满屏的工具栏和菜单选项&#xff0c;很多初学者都会感到无从下手。特别是当手头有一份刚下载的SHP格式路网数据时&#xff0c;如何正确加载、设置坐标系并进行基础可视化&#xff…...

全平台广告拦截神器:AdGuard扩展零门槛部署与优化指南

全平台广告拦截神器&#xff1a;AdGuard扩展零门槛部署与优化指南 【免费下载链接】AdguardBrowserExtension AdGuard browser extension 项目地址: https://gitcode.com/gh_mirrors/ad/AdguardBrowserExtension 广告拦截技术已成为现代浏览器的必备能力&#xff0c;AdG…...

百考通:AI全流程智能化赋能答辩PPT,让学术展示更高效从容

毕业季、开题季&#xff0c;一份专业出彩的PPT是顺利通过答辩的关键。但从论文中提炼核心观点、规划答辩逻辑、设计美观版式&#xff0c;往往让学生们焦头烂额。百考通&#xff08;https://www.baikaotongai.com&#xff09; 凭借AI技术深度赋能&#xff0c;打造出一站式答辩PP…...

DAMOYOLO-S实战教程:对接企业OA系统实现图片自动审核与标注

DAMOYOLO-S实战教程&#xff1a;对接企业OA系统实现图片自动审核与标注 1. 引言&#xff1a;从手动审核到智能自动化的跨越 想象一下这个场景&#xff1a;你是一家电商公司的运营&#xff0c;每天有上千张商品图片需要上传到后台。按照公司规定&#xff0c;每张图片都需要人工…...

STM32新手避坑:用Keil5和SSD1306 OLED显示自定义汉字(解决中文乱码)

STM32实战指南&#xff1a;Keil5与SSD1306 OLED的汉字显示优化全解析 刚接触STM32开发的工程师们&#xff0c;在完成基础的点灯实验后&#xff0c;往往迫不及待想尝试更丰富的显示功能。SSD1306 OLED屏幕因其小巧的体积和清晰的显示效果&#xff0c;成为许多项目的首选。但当涉…...

GitHub Copilot 默认启用训练之后 企业安全如何应对

文章目录前言一、这次政策改动&#xff0c;到底改了什么二、为什么企业不能只看“Business 和 Enterprise 不受影响”三、content exclusion 为什么挡不住所有风险四、从 IDE 到 Agent&#xff0c;企业研发边界已经变了五、企业现在就该做的几件事总结前言 GitHub 这次关于 Co…...

难点突破:HR 每天看 200 份简历,80% 时间都在做无效劳动

去年某互联网公司招一个产品经理&#xff0c;收到 847 份简历。HR 小王花了整整三天时间初筛&#xff0c;最后发现真正符合要求的只有 23 个人。更让人崩溃的是&#xff0c;这 23 个人里有 5 个是第二天才看到的——因为简历太多&#xff0c;优质候选人被淹没在简历海里。 这不…...

SQL Server数据库标记为SUSPECT的紧急修复指南:从单用户到多用户模式的完整恢复流程

1. 数据库被标记为SUSPECT的常见原因 数据库突然变成SUSPECT状态&#xff0c;就像电脑突然蓝屏一样让人措手不及。我遇到过最典型的情况是机房突然断电&#xff0c;导致SQL Server没来得及完成所有事务就强制关闭了。这种情况下&#xff0c;数据库引擎为了保护数据完整性&#…...

探索Pem电解槽三维仿真模型:聚焦氢气扩散

Pem电解槽三维仿真模型&#xff0c;阴极不通水&#xff0c;只考虑氢气的扩散&#xff0c;使用二次电流分布浓物质传递自由与多孔介质流&#xff0c;不使用水电解槽节点。最近在研究Pem电解槽的三维仿真模型&#xff0c;这里面有个挺有意思的设定&#xff0c;阴极不通水&#xf…...

保姆级教程:用Davinci Configurator配置RH850F1KMS1双看门狗(AWO域与ISO域)

RH850F1KMS1双看门狗配置实战&#xff1a;从AWO域到ISO域的完整设计指南 在汽车电子开发领域&#xff0c;系统可靠性直接关系到行车安全。RH850F1KMS1作为瑞萨电子面向功能安全应用的高性能MCU&#xff0c;其独特的双看门狗架构&#xff08;AWO域与ISO域&#xff09;为系统提供…...