Python | Leetcode Python题解之第420题强密码检验器

题目:

题解:

class Solution:def strongPasswordChecker(self, password: str) -> int:n = len(password)has_lower = has_upper = has_digit = Falsefor ch in password:if ch.islower():has_lower = Trueelif ch.isupper():has_upper = Trueelif ch.isdigit():has_digit = Truecategories = has_lower + has_upper + has_digitif n < 6:return max(6 - n, 3 - categories)elif n <= 20:replace = cnt = 0cur = "#"for ch in password:if ch == cur:cnt += 1else:replace += cnt // 3cnt = 1cur = chreplace += cnt // 3return max(replace, 3 - categories)else:# 替换次数和删除次数replace, remove = 0, n - 20# k mod 3 = 1 的组数,即删除 2 个字符可以减少 1 次替换操作rm2 = cnt = 0cur = "#"for ch in password:if ch == cur:cnt += 1else:if remove > 0 and cnt >= 3:if cnt % 3 == 0:# 如果是 k % 3 = 0 的组,那么优先删除 1 个字符,减少 1 次替换操作remove -= 1replace -= 1elif cnt % 3 == 1:# 如果是 k % 3 = 1 的组,那么存下来备用rm2 += 1# k % 3 = 2 的组无需显式考虑replace += cnt // 3cnt = 1cur = chif remove > 0 and cnt >= 3:if cnt % 3 == 0:remove -= 1replace -= 1elif cnt % 3 == 1:rm2 += 1replace += cnt // 3# 使用 k % 3 = 1 的组的数量,由剩余的替换次数、组数和剩余的删除次数共同决定use2 = min(replace, rm2, remove // 2)replace -= use2remove -= use2 * 2# 由于每有一次替换次数就一定有 3 个连续相同的字符(k / 3 决定),因此这里可以直接计算出使用 k % 3 = 2 的组的数量use3 = min(replace, remove // 3)replace -= use3remove -= use3 * 3return (n - 20) + max(replace, 3 - categories)

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

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

相关文章

数据结构之存储位置

p 和 "hello,world"存储在内存哪个区域&#xff1f;( ) (鲁科安全) int main() { char *p "hello,world"; return 0; } p是栈区&#xff0c;”hello,world”是.ro段 一个由C/C编译的程序&#xff0c;会将占用的内存分为几个部分&#xff1a;堆、栈、代…

02 创建拦截器

请求拦截器本质上是在请求之前调用的函数&#xff0c;用来对请求参数进行新增和修改 响应拦截器本质上是在响应之后调用的函数&#xff0c;用来对响应数据做点什么。 创建拦截器的步骤如下&#xff1a; 整个流程是 声明拦截器&#xff08;一个对象&#xff0c;包含请求响应…

基于SpringBoot+Vue的智慧物业管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目源码、Python精…

transformer模型进行英译汉,汉译英

上面是在测试集上的表现 下面是在训练集上的表现 上面是在训练集上的评估效果 这是在测试集上的评估效果,模型是transformer模型,模型应该没问题,以上的是一个源序列没加结束符和加了结束符的情况。 transformer源序列做遮挡填充的自注意力,这就让编码器的输出中每个token的语…

Python 虚拟环境安装使用(Anaconda 完整实操版)

1. 安装 安装 anaconda&#xff08;包含 python 和 pip 等&#xff0c;支持创建及管理多个 python 虚拟环境&#xff09; 注&#xff1a;miniconda 可能也可以&#xff0c;但是没用过&#xff0c;优先 anaconda 1.1 linux 1.1.1 ubuntu Mac、Windows 及其他 Linux 系统类似…

寄存器与内存

第三课&#xff1a;寄存器与内存、中央处理器&#xff08;CPU&#xff09;、指令和程序及高级 CPU 设计-CSDN博客 锁存器 引入 ABO0&#xff08;开始状态&#xff09;001&#xff08;将A置1&#xff09;110&#xff08;将A置0&#xff09;11 无论怎么做&#xff0c;都没法从1变…

大学生必看!60万人在用的GPT4o大学数学智能体有多牛

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作者&#x1…

Mamba所需的causal-conv1d 和mamba-ssm库在哪下载?

背景介绍 参照 Mamba [state-spaces/mamba: Mamba SSM architecture (github.com)] github中提到的环境安装[Installation 一栏] [Option] pip install causal-conv1d>1.4.0: an efficient implementation of a simple causal Conv1d layer used inside the Mamba block.…

Python介绍

Python&#xff1a;一门优雅而强大的编程语言 在当今这个数字化时代&#xff0c;编程已经成为连接现实与虚拟世界的桥梁&#xff0c;而Python&#xff0c;作为一门广泛使用的编程语言&#xff0c;以其简洁的语法、丰富的库支持和广泛的应用领域&#xff0c;赢得了全球开发者的…

十个服务器中毒的常见特征及其检测方法

服务器作为企业的核心资源&#xff0c;其安全性至关重要。一旦服务器被病毒入侵&#xff0c;不仅会影响系统的正常运行&#xff0c;还可能导致数据泄露等严重后果。以下是十种常见的服务器中毒特征及其检测方法。 1. 系统性能下降 病毒常常占用大量的CPU和内存资源&#xff0…

Qt_窗口界面QMainWindow的介绍

目录 1、菜单栏QMenuBar 1.1 使用QMainWindow的准备工作 1.2 在ui文件中设计窗口 1.3 在代码中设计窗口 1.4 实现点击菜单项的反馈 1.5 菜单中设置快捷键 1.6 菜单中添加子菜单 1.7 菜单项中添加分割线和图标 1.8 关于菜单栏创建方式的讨论 2、工具栏QToolBar …

k8s Service 服务

文章目录 一、为什么需要 Service二、Kubernetes 中的服务发现与负载均衡 -- Service三、用例解读1、Service 语法2、创建和查看 Service 四、Headless Service五、集群内访问 Service六、向集群外暴露 Service七、操作示例1、获取集群状态信息2、创建 Service、Deployment3、创…

飞腾计算模块RapidIO性能测试

1、背景介绍 飞腾计算模块采用FT2000 64核处理器&#xff0c;搭配Tsi721 PCIE转RapidIO芯片&#xff0c;实现飞腾平台下的SRIO数据通信。操作系统采用麒麟信安&#xff0c;内核版本4.19.90. 2、驱动加载 驱动加载部分类似之前写过的X86平台下的RapidIO驱动加载&#xff0c;具…

ollama设置开机启动服务

在 Ubuntu 20.04 系统中创建一个 systemd 服务文件以管理一个名为 ollama 的自定义服务&#xff0c;您需要遵循以下步骤&#xff1a; 打开终端。创建一个新的服务文件 /etc/systemd/system/ollama.service。 下面是一个基本的 ollama.service 文件示例。您需要根据您的服务需求…

Rsync未授权访问漏洞复现及彻底修复

一、什么是 Rsync&#xff1f; Rsync 是一种广泛使用的文件传输工具&#xff0c;它允许系统管理员和用户通过局域网&#xff08;LAN&#xff09;或广域网&#xff08;WAN&#xff09;在计算机之间同步文件和目录。Rsync 支持通过本地或远程 shell 访问&#xff0c;也可以作为守…

【Linux】常用指令详解一(ls,-a,-l,-d,cd,pwd,mkdir,touch,rm,clear)

1.前言 读了一些Linux常用指令的博文&#xff0c;很可惜没读到一点点手把手教怎么操作的博文&#xff0c;所以写一篇手把手教适合初学者的Linux常用指令博文 Linux的命令是树状结构 输入这一句命令&#xff1a;yum install -y tree 即可以查看Linux树状目录结构 查看示例&am…

淘宝npm镜像源更新后,如何正常使用npm命令

文章目录 一. npm命令报错二. 更换淘宝最新npm镜像源三. npm命令使用 一. npm命令报错 使用npm install *****命令 报错 npm error code CERT_HAS_EXPIRED npm error errno CERT_HAS_EXPIRED npm error request to https://registry.npm.taobao.org/express failed, reason: …

STM32快速复习(十二)FLASH闪存的读写

文章目录 一、FLASH是什么&#xff1f;FLASH的结构&#xff1f;二、使用步骤1.标准库函数2.示例函数 总结 一、FLASH是什么&#xff1f;FLASH的结构&#xff1f; 1、FLASH简介 &#xff08;1&#xff09;STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&…

pytorch实现RNN网络

目录 1.导包 2. 加载本地文本数据 3.构建循环神经网络层 4.初始化隐藏状态state 5.创建随机的数据&#xff0c;检测一下代码是否能正常运行 6. 构建一个完整的循环神经网络 7.模型训练 8.个人知识点理解 1.导包 import torch from torch import nn from torch.nn imp…

Qt+FFmpeg开发视频播放器笔记(三):音视频流解析封装

音频解析 音频解码是指将压缩的音频数据转换为可以再生的PCM(脉冲编码调制)数据的过程。 FFmpeg音频解码的基本步骤如下: 初始化FFmpeg解码器(4.0版本后可省略): 调用av_register_all()初始化编解码器。 调用avcodec_register_all()注册所有编解码器。 打开输入的音频流:…