leetcode 2645. 构造有效字符串的最少插入数-python

题目:
给你一个字符串 word ,你可以向其中任何位置插入 “a”、“b” 或 “c” 任意次,返回使 word 有效 需要插入的最少字母数。

如果字符串可以由 “abc” 串联多次得到,则认为该字符串 有效 。
在这里插入图片描述

解题方法

1.先判断字符串是否全是由abc组成
2.判断字符串是否全是由单个a或b或c组成
3.字符串长度为2,只需添加一次情况
4.遍历

  • 使用for循环会出现 for i in range(s) 在循环里i+n无效 如:当前i= 2 循环里i+2 4,进入下一次循环
    i为i+1 即3 所以用while循环,用while,则需先定义当前i为0,且i<len(word)

  • 字符判断时,首先先判断是否是字符串中的最后一个字符,是则不再进行后续的循环

  • 不是最后一个字符,接着判断n种情况,ab、ac、bc、abc、a、b、c这几种情况需要添加字符数量,下一轮从哪个字符开始遍历

代码:

class Solution(object):def addMinimum(self, word):""":type word: str:rtype: int"""s=len(word)#判断字符串是否全是由abc组成if s==0 or (word.count('abc') == s/3 and s%3==0):return 0#字符串是否全是由单个a或b或c组成elif word.count(word[0])== s:return s*2#字符串长度为2,只需添加一次情况elif s==2 and word in ('ab','ac','bc'):return s//2count =0i = 0#遍历while i<s:if word[i] =='a' and i<s:#当前字符是否是字符串最后一个字符if i+1 ==s:count+=2breakif word[i+1] =='b' and i+1<s:if i+2==s:count+=1breakif word[i+2] =='c' and i+2<s:if i+3==s:breaki+=3else:count+=1i+=2elif word[i+1] =='c' and i+1<s:if i+2==s:count+=1breakcount+=1i+=2else:count+=2i+=1elif word[i]=='b' and i<s:if i+1==s:count+=2breakif word[i+1] =='c' and i+1<s:if i+2==s:count+=1breakcount+=1i+=2else:count+=2i+=1else:if i+1==s:count+=2breakcount+=2i+=1return count

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

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

相关文章

【剪枝】【广度优先】【深度优先】488祖玛游戏

作者推荐 【动态规划】458:可怜的小猪 涉及知识点 剪枝 广度优先 深度优先 488祖玛游戏 在这个祖玛游戏变体中&#xff0c;桌面上有 一排 彩球&#xff0c;每个球的颜色可能是&#xff1a;红色 ‘R’、黄色 ‘Y’、蓝色 ‘B’、绿色 ‘G’ 或白色 ‘W’ 。你的手中也有一些…

kubeadm安装kubernetes

基本环境配置 节点分为&#xff1a;master&#xff0c;node&#xff0c;masterlb(keepalived虚拟Ip&#xff0c;不占用机器) k8s-master01 16 k8s-node01 113 15 k8s-node02 115 进入之后直接选done done 上海 123456 设置静态ip 然后去虚拟机里面设置ens即可 查看命…

MFC为对话框资源添加类

VC6新建一个对话框类型的工程; 建立之后资源中默认有2个对话框,一个是主对话框,About这个是默认建立的关于版权信息的; 然后主对话框有对应的.h和.cpp文件;可以在其中进行编程; 默认建立的有一个 关于 对话框; 在资源中新插入一个对话框,IDD_DIALOG1是对话框ID; 新加…

连接数问题

连接数问题 在使用mysql时有时候会报too many connections错误&#xff0c;这是连接数过多导致的&#xff0c;然后就会去修改max_connections参数&#xff0c;但是这个参数也不能无上限的增大&#xff0c;容易造成机器内存不足&#xff0c;还是需要找到为什么会有这么多连接的原…

国际版WPS Office 18.6.1

【应用名称】&#xff1a;WPS Office 【适用平台】&#xff1a;#Android 【软件标签】&#xff1a;#WPS 【应用版本】&#xff1a;18.6.1 【应用大小】&#xff1a;160MB 【软件说明】&#xff1a;软件日常更新。WPS Office是使用人数最多的移动办公软件。独有手机阅读模式…

LLM主流框架:Causal Decoder、Prefix Decoder和Encoder-Decoder

本文将介绍如下内容&#xff1a; transformer中的mask机制Causal DecoderPrefix DecoderEncoder Decoder总结 一、transformer中的mask机制 在Transformer模型中&#xff0c;mask机制是一种用于在self-attention中的技术&#xff0c;用以控制不同token之间的注意力交互。具体…

【Redis】Redis初识

一、redis概述 1、redis redis&#xff1a;一款高性能的NOSQL系列的非关系型数据库redis 2、NoSQL NoSQL&#xff1a;泛指非关系型的数据库 NOSQL分类&#xff1a; 键值(Key-Value)存储数据库&#xff1a;内容缓存&#xff0c;主要用于处理大量数据的高访问负载列存储数据…

VUE 前端框架学习总结

Vue 的核心库只关注视图层&#xff0c;方便与第三方库或既有项目整合。 视图层即页面展示&#xff08;给用户看的部分&#xff09;&#xff0c;刷新后台给的数据&#xff1a;HTML CSS JS Vue 只负责视图层&#xff0c;其他前端部分有以下技术解决 网络通信 &#xff1a; axi…

探索WPF控件内容模型的四大支柱

WPF 内容模型 WPF控件内容模型主要指派生于System.Windows.Controls.Control类的各种控件&#xff0c;有四个可包含任意内容的类。 下表列出了继承自 Control 的类。 ContentControl&#xff1a;用于包含一段任意类型的内容。但是只能包含一个子元素作为其“内容”。它可以包…

arm服务器和麒麟v10安装nacos

在arm飞腾服务器和麒麟V10SP3上安装nacos 服务器和系统版本 ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Lance)Kernel: 4.19.90-52.22.v2207.ky10.aarch64Build: Kylin Linux Advanced Server release V10 (S…

图像分割deeplab系列

DeepLab系列是谷歌团队提出的一系列语义分割算法。DeepLab v1于2014年推出&#xff0c;并在PASCAL VOC2012数据集上取得了分割任务第二名的成绩&#xff0c;随后2017到2018年又相继推出了DeepLab v2&#xff0c;DeepLab v3以及DeepLab v3。DeepLab v1的两个创新点是空洞卷积&am…

【Python】新鲜出炉的海洋捕食者算法Python版本

2020年发表的海洋捕食者算法《Marine Predators Algorithm: A nature-inspired metaheuristic》。 作者只在原论文中给出了MATLAB代码&#xff0c;网上也没有Python版本&#xff0c;我自己用Python重写了MATLAB代码。 """2020海洋捕食者算法 """…

spaceship

通过数字平台启动您的网站、想法和未来&#xff0c;该平台旨在提供和连接您所需的域、托管、电子邮件和 Web 工具&#xff0c;并让您完全掌控 如果需要购买可以开5347的卡&#xff0c;点击获取

python 多线程 简介

python多线程简介 多线程的概念是相对单线程而言的。所谓单线程是指CPU在处理完成一项任务之前是不会开始处理第二件任务的。简单来说&#xff0c;单线程在执行任务时是有一定的顺序的。而随着科技的进步&#xff0c;CPU等计算机组件的升级换代日新月异&#xff0c;CPU处理速度…

小学信息科技Python课程第2课:坐标与画笔

一、turtle画布与坐标系 在同一平面互相垂直且有公共原点的两条数轴构成平面直角坐标系。在坐标系中&#xff0c;水平方向的轴都称为x轴&#xff0c;垂直方向的轴都称为y轴 它们相交于O点&#xff0c;在这一个点里&#xff0c;x轴的值为0&#xff0c;y轴的值也为0&#xff0c;所…

掌握 Vue 响应式系统,让数据驱动视图(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

SpringBoot全局配置Long转String丢失精度的问题解决

第一种方式 简单粗暴&#xff0c;将所有的Long类型&#xff0c;改为String&#xff0c;数据库改成varchar类型&#xff1b; 第二种方式 自己建个配置类 extends WebMvcConfigurerAdapter 已经被弃用&#xff0c;直接实现WebMvcConfigurer该接口就行了 EnableWebMvc Config…

什么是网络数据抓取?有什么好用的数据抓取工具?

一、什么是网络数据抓取 网络数据抓取&#xff08;Web Scraping&#xff09;是指采用技术手段从大量网页中提取结构化和非结构化信息&#xff0c;按照一定规则和筛选标准进行数据处理&#xff0c;并保存到结构化数据库中的过程。目前网络数据抓取采用的技术主要是对垂直搜索引…

DNS解析和它的三个实验

一、DNS介绍 DNS&#xff1a;domain name server 7层协议 名称解析协议 tcp /53 主从之间的同步 udp/53 名字解析 DNS作用&#xff1a;将域名转换成IP地址的协议 1.1DNS的两种实现方式 1.通过hosts文件&#xff08;优先级最高&#xff09; 分散的管理 linux /etc/hos…

深度生成模型(Deep Generative Models)

什么是机器学习 深度生成模型&#xff08;Deep Generative Models&#xff09;是一类利用深度学习方法生成新样本的模型。这些模型通常被用于生成与训练数据集相似的新数据&#xff0c;例如图像、文本或音频。深度生成模型的两个主要类型是生成对抗网络&#xff08;GANs&#…