力扣每日一题 6/22 字符串/贪心
- 博客主页:誓则盟约
- 系列专栏:IT竞赛 专栏
- 关注博主,后期持续更新系列文章
- 如果有错误感谢请大家批评指出,及时修改
- 感谢大家点赞👍收藏⭐评论✍
2663.字典序最小的美丽字符串【困难】
题目:
如果一个字符串满足以下条件,则称其为 美丽字符串 :
- 它由英语小写字母表的前
k
个字母组成。 - 它不包含任何长度为
2
或更长的回文子字符串。
给你一个长度为 n
的美丽字符串 s
和一个正整数 k
。
请你找出并返回一个长度为 n
的美丽字符串,该字符串还满足:在字典序大于 s
的所有美丽字符串中字典序最小。如果不存在这样的字符串,则返回一个空字符串。
对于长度相同的两个字符串 a
和 b
,如果字符串 a
在与字符串 b
不同的第一个位置上的字符字典序更大,则字符串 a
的字典序大于字符串 b
。
- 例如,
"abcd"
的字典序比"abcc"
更大,因为在不同的第一个位置(第四个字符)上d
的字典序大于c
。
示例 1:
输入:s = "abcz", k = 26 输出:"abda" 解释:字符串 "abda" 既是美丽字符串,又满足字典序大于 "abcz" 。 可以证明不存在字符串同时满足字典序大于 "abcz"、美丽字符串、字典序小于 "abda" 这三个条件。
示例 2:
输入:s = "dc", k = 4 输出:"" 解释:可以证明,不存在既是美丽字符串,又字典序大于 "dc" 的字符串。
提示:
1 <= n == s.length <= 105
4 <= k <= 26
s
是一个美丽字符串
分析问题:
由题意知,返回的s中不能存在长度为2或3以及更长的回文串,这句话什么意思呢?长度为2的回文串指的就是两个字母一样的字符串,那长度为3或者更长的回文串都有一个共同的特点:中间必然存在长度为3的一个回文串,也就是说存在下标i,使得 ls[i]=ls[i-2],所以我们判断是否存在回文串,只需要判断对于每个下标i,是否存在ls[i]==ls[i-1] or ls[i]==ls[i-2] 即可。
其次,我们返回的字符串还要求 字典序比原s的大,还得是所有符合题意美丽字符串里面的字典序最小的那个。那么我们就可以从后往前去遍历,因为最后的字母对字典序的影响最小,最后的字母如果没有找到合适的那么就往前一个字母,找到合适的就可以直接返回。否则返回空字符串。
不过要注意,题目给的s本身就是一个美丽字符串。
代码实现:
class Solution:def smallestBeautifulString(self, s: str, k: int) -> str:a = ord('a')k += as = list(map(ord, s))n = len(s)i = n - 1s[i] += 1 # 从最后一个字母开始while i < n:if s[i] == k: # 超过范围if i == 0: return "" # 无法进位# 进位s[i] = ai -= 1s[i] += 1elif i and s[i] == s[i - 1] or i > 1 and s[i] == s[i - 2]:s[i] += 1 # 如果 s[i] 和前面的字符形成回文串,就继续增加 s[i]else:i += 1 # 检查 s[i] 是否和后面的字符形成回文串return ''.join(map(chr, s))
总结:
代码详解:
a = ord('a')
和k += a
:获取字符'a'
的 ASCII 值,并对k
进行相应调整。s = list(map(ord, s))
:将输入字符串s
中的字符转换为对应的 ASCII 值,以便进行数值操作。- 从字符串末尾
i = n - 1
开始,将当前位置的字符值s[i]
增加 1。 - 如果
s[i]
超过给定范围(等于k
),且无法进位(i == 0
),则返回空字符串;否则进位,将当前位置重置为'a'
(ASCII 值为a
),并向前一位i -= 1
进行处理。 - 如果
s[i]
与前一个字符s[i - 1]
相同,或者与前两个字符s[i - 2]
相同(形成回文串),则继续增加s[i]
的值。 - 如果没有形成回文串,则向后移动位置
i += 1
继续检查。 - 最后将处理后的 ASCII 值列表转换回字符并连接成字符串返回。
考点:
- 对 ASCII 值的理解和操作。
- 字符串的遍历和修改。
- 回文串的判断和处理。
- 边界情况的考虑,如进位和无法得到结果的情况。
反思:
- 代码的逻辑较为复杂,需要仔细考虑各种边界情况和特殊情况,在编写时容易出错。
- 对于回文串的判断和处理,可以思考是否有更简洁或高效的方式。
- 在处理进位和字符范围时,要确保逻辑的严密性,避免出现错误结果。
收获:
- 学会了如何通过 ASCII 值来操作字符,灵活处理字符串中的字符变化。
- 深入理解了字符串遍历和修改的方法,以及如何根据特定条件进行调整。
- 提升了对复杂逻辑的分析和处理能力,特别是在涉及边界情况和多种条件判断时。
- 意识到在处理类似问题时,需要全面考虑各种可能的情况,进行充分的测试以确保代码的正确性。
“自身拥有越丰富,他在别人身上所能发现得到的就越少。” ——《人类的智慧》
相关文章:
![](https://img-blog.csdnimg.cn/direct/471f207c3cd9415581a09a7b3dedbd0f.jpeg)
力扣每日一题 6/22 字符串/贪心
博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 2663.字典序最小的美丽字符串【困难】 题目: 如果一个字符串满…...
![](https://img-blog.csdnimg.cn/direct/b9bfc91d395a4a29987dbde86e32992c.png)
MCT Self-Refine:创新集成蒙特卡洛树搜索 (MCTS)提高复杂数学推理任务的性能,超GPT4,使用 LLaMa-3 8B 进行自我优化
📜 文献卡 题目: Accessing GPT-4 level Mathematical Olympiad Solutions via Monte Carlo Tree Self-refine with LLaMa-3 8B作者: Di Zhang; Xiaoshui Huang; Dongzhan Zhou; Yuqiang Li; Wanli OuyangDOI: 10.48550/arXiv.2406.07394摘要: This pape…...
![](https://img-blog.csdnimg.cn/direct/0760656619794218aba8e42f5cc03111.gif)
自制HTML5游戏《开心消消乐》
1. 引言 游戏介绍 《开心消消乐》是一款基于HTML5技术开发的网页游戏,以其简单的操作方式、轻松的游戏体验和高度的互动性,迅速在社交平台上获得了广泛的关注和传播。玩家通过消除相同类型的元素来获得分数,游戏设计巧妙,易于上手…...
![](https://img-blog.csdnimg.cn/direct/92f8d01c00f044c1b06891d154b350b2.png)
【C++】平衡二叉树(AVL树)的实现
目录 一、AVL树的概念二、AVL树的实现1、AVL树的定义2. 平衡二叉树的插入2.1 按照二叉排序树的方式插入并更新平衡因子2.2 AVL树的旋转2.2.1 新节点插入较高左子树的左侧(LL平衡旋转)2.2.2 新节点插入较高右子树的右侧(RR平衡旋转)…...
![](https://www.ngui.cc/images/no-images.jpg)
第一百一十八节 Java面向对象设计 - Java接口
Java面向对象设计 - Java接口 什么是接口? Java中的接口定义了一个引用类型来创建抽象概念。接口由类实现以提供概念的实现。 在Java 8之前,一个接口只能包含抽象方法。 Java 8允许接口具有实现的静态和默认方法。 接口通过抽象概念定义不相关类之间…...
![](https://www.ngui.cc/images/no-images.jpg)
Flink nc -l -p 监听端口测试
1、9999端口未占用 netstat -apn|grep 99992、消息发送端 nc -l -k -p 9999 {"user":"ming","url":"www.baidu1.com", "timestamp":1200L, "score":1} {"user":"xiaohu","url":…...
![](https://www.ngui.cc/images/no-images.jpg)
在IntelliJ IDEA中使用Spring Boot:快速配置
使用IntelliJ IDEA开发Spring Boot应用程序可以极大地提高开发效率,因为IDEA提供了许多便捷的功能,比如自动补全、代码分析、热部署等。以下是一篇可能的CSDN博客文章草稿,介绍如何在IntelliJ IDEA中使用Spring Boot: 在IntelliJ …...
![](https://www.ngui.cc/images/no-images.jpg)
django filter 批量修改
django filter 批量修改 在Django中,如果你想要批量修改记录,可以使用update()方法。这个方法允许你在一个查询集上执行批量更新,而不需要为每条记录生成单独的数据库事务。 以下是一个使用update()方法批量修改记录的例子: fro…...
![](https://img-blog.csdnimg.cn/direct/85bc15800ba9419b8aa1e26c172c537f.png)
maven:中央仓库验证方式改变:401 Content access is protected by token
前几天向maven中央仓库发布版本,执行上传命令mvn release:perform时报错了: [ERROR] Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.13:deploy (injected-nexus-deploy) on project xxxxx: Failed to deploy artifacts: …...
![](https://www.ngui.cc/images/no-images.jpg)
【面试】http
一、定义 HTTP(超文本传输协议),是一种用于分布式、协作式、超媒体信息系统的应用层协议,它是万维网数据通信的基础。主要特点是无状态(服务器不会保存之前请求的状态)、无连接(服务器处理完请…...
![](https://img-blog.csdnimg.cn/img_convert/394077c6aa627081bcb19a2ffc872334.png)
获取泛型,泛型擦除,TypeReference 原理分析
说明 author blog.jellyfishmix.com / JellyfishMIX - githubLICENSE GPL-2.0 获取泛型,泛型擦除 下图中示例代码是一个工具类用于生成 csv 文件,需要拿到数据的类型,使用反射感知数据类型的字段,来填充表字段名。可以看到泛型…...
![](https://img-blog.csdnimg.cn/direct/5258b2ca838f48d5be951309184e249c.png)
springboot 3.x 之 集成rabbitmq实现动态发送消息给不同的队列
背景 实际项目中遇到针对不同类型的消息,发送消息到不同的队列,而且队列可能还不存在,需要动态创建,于是写了如下代码,实践发现没啥问题,这里分享下。 环境 springboot 3.2 JDK 17 rabbitMQ模型介绍 图片…...
![](https://www.ngui.cc/images/no-images.jpg)
C++ 代码实现鼠标右键注册菜单,一级目录和二级目录方法
最近做的一个项目, 在使用windows的时候,我希望在右键菜单中添加一个自定义的选项, 该选项下有我经常使用的多个程序快捷方式, 直接上代码 头文件 #pragma once #include <Windows.h> #include <iostream> #include <string> using namespace std; …...
![](https://img-blog.csdnimg.cn/direct/64d4dcf8752a4e9e83283f758be08596.png)
SQLite 3 优化批量数据存储操作---事务transaction机制
0、事务操作 事务的目的是为了保证数据的一致性和完整性。 事务(Transaction)具有以下四个标准属性,通常根据首字母缩写为 ACID: 原子性(Atomicity):确保工作单位内的所有操作都成功完成&…...
![](https://www.ngui.cc/images/no-images.jpg)
[程序员] 表达的能力
之前看CSDN的问答区,很多时候,感觉问题的描述所要表达的意思非常模糊,或者说描述不清。如果是想回答问题的人想回答问题,首先要搞清楚是什么问题,就需要再问问题主很多细节的东西。三来四去,才能搞清楚具体…...
![](https://img-blog.csdnimg.cn/direct/56774b7c6b2349c7b57bc4a8e5e2ae77.png)
rknn转换后精度差异很大,失真算子自纠
下面是添加了详细注释的优化代码: import cv2 import numpy as np import onnx import onnxruntime as rt from onnx import helper, shape_inferencedef get_all_node_names(model):"""获取模型中所有节点的名称。参数:model (onnx.ModelProto): O…...
![](https://img-blog.csdnimg.cn/direct/59e6d77fff0c4801aab33af7427e55aa.png)
【C语言】解决C语言报错:Stack Overflow
文章目录 简介什么是Stack OverflowStack Overflow的常见原因如何检测和调试Stack Overflow解决Stack Overflow的最佳实践详细实例解析示例1:递归调用过深示例2:分配过大的局部变量示例3:嵌套函数调用过多 进一步阅读和参考资料总结 简介 St…...
![](https://img-blog.csdnimg.cn/f95ddae62a4e43a68295601c723f92fb.gif#pic_center)
【滚动哈希 二分查找】1044. 最长重复子串
本文涉及知识点 滚动哈希 二分查找算法合集 LeetCode 1044. 最长重复子串 给你一个字符串 s ,考虑其所有 重复子串 :即 s 的(连续)子串,在 s 中出现 2 次或更多次。这些出现之间可能存在重叠。 返回 任意一个 可能具…...
![](https://www.ngui.cc/images/no-images.jpg)
webid、sec_poison_id、a1、web_session参数分析与算法实现
文章目录 1. 写在前面2. 参数分析3. 核心算法【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与开发工作! 【🌟作者推荐】:对爬…...
![](https://www.ngui.cc/images/no-images.jpg)
Qt|QWebSocket与Web进行通讯,实时接收语音流
实现功能主要思路:在网页端进行语音输入,PC机可以实时接收并播放语音流。 此时,Qt程序做客户端,Web端做服务器,使用QWebSocket进行通讯,实时播放接收的语音流。 功能实现 想要实现该功能,需要…...
![](https://img-blog.csdnimg.cn/img_convert/f4377cca15e431e57e3a02aef16dd819.jpeg)
「51媒体」电视台媒体邀约采访报道怎么做?
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 电视台作为地方主流媒体,对于新闻报道有着严格的选题标准和报道流程。如果您希望电视台对某个会议或活动进行报道,可以按这样的方法来做: 1.明确活动信…...
![](https://img-blog.csdnimg.cn/direct/cb4e26753aea4c86879ab26923514e29.jpeg#pic_center)
Python提取PDF文本和图片,以及提前PDF页面中指定矩形区域的文本
前言 从PDF中提取内容能帮助我们获取文件中的信息,以便进行进一步的分析和处理。此外,在遇到类似项目时,提取出来的文本或图片也能再次利用。要在Python中通过代码提取PDF文件中的文本和图片,可以使用 Spire.PDF for Python 这个…...
![](https://img-blog.csdnimg.cn/direct/ed6f33ae7aa7476d87bb655e204a1707.jpeg#pic_center)
C#实现边缘锐化(图像处理)
在 C# 中进行图像的边缘锐化,可以通过卷积滤波器实现。边缘锐化的基本思想是通过卷积核(也称为滤波器或掩模)来增强图像中的边缘。我们可以使用一个简单的锐化核,例如: [ 0, -1, 0][-1, 5, -1][ 0, -1, 0]这个卷积核…...
![](https://img-blog.csdnimg.cn/direct/ed4f4d574d214dc5b8a9b00ab233611f.png)
ffmpeg windows系统详细教程
视频做预览时黑屏,但有声音问题解决方案。 需要将 .mp4编成H.264格式的.mp4 一般上传视频的站点,如YouTube、Vimeo 等,通常会在用户上传视频时自动对视频进行转码,以确保视频能够在各种设备和网络条件下流畅播放。这些网站通常…...
![](https://img-blog.csdnimg.cn/direct/5d18c32fed5a47bdb82bcdcffa2d371c.png)
【单片机】MSP430G2553单片机 Could not find MSP-FET430UIF on specified COM port 解决方案
文章目录 MSP430G2553开发板基础知识解决办法如何实施解决办法4步骤一步骤二步骤三 MSP430G2553开发板基础知识 MSP430G2553开发板如下图,上半部分就是UIF程序下载调试区域的硬件。个人觉得MSP430G2553开发板的这个部分没有做好硬件设计,导致很多系统兼…...
![](https://img-blog.csdnimg.cn/direct/65a87879838d4272bf143fb05f07e95a.png)
每日一题——力扣104. 二叉树的最大深度(举一反三+思想解读+逐步优化)四千字好文
一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 目录 我的写法 代码功能 代码结构 时间复杂度分析 空间复杂度分析 总结 我要更强 优化方法:迭代&…...
![](https://www.ngui.cc/images/no-images.jpg)
wpf textbox 有焦点 导致后台更新 前台不跟着改变
这个问题可能是由于 WPF 的数据绑定机制导致的。当 TextBox 有焦点时,它会独立于数据绑定进行更新,这可能会导致前台界面不能及时反映后台数据的变化。 1.使用 UpdateSourceTrigger 属性: 在数据绑定时,将 UpdateSourceTrigger 属性设置为 PropertyChanged。这样当 TextBox 的…...
![](https://img-blog.csdnimg.cn/direct/7cec52d5859b48268d084bf15c87669e.png)
数字化物资管理系统的未来:RFID技术的创新应用
在信息化和智能化不断发展的背景下,物资管理系统的数字化转型已成为各行各业关注的焦点。RFID技术作为一种先进的物联网技术,通过全面数字化实现物资信息的实时追踪和高效管理,为企业的物资管理提供了强有力的支持。 首先,RFID技…...
![](https://www.ngui.cc/images/no-images.jpg)
【docker】常用指令-表格整理
以下列出的指令是Docker中常用的命令,但并不是全部。Docker的指令非常丰富,可以根据具体的需求和场景选择合适的指令。同时,每个指令都有很多选项和参数可以使用,可以通过 docker COMMAND --help 来获取更详细的信息。 一、容器命…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
洛谷——P2824 排序
题目来源:[HEOI2016/TJOI2016] 排序 - 洛谷https://www.luogu.com.cn/problem/P2824 问题思路 本文介绍一种二分答案的做法,时间复杂度为:(nm)*log(n)*log(n).本题存在nlog(n)的做法,然而其做法没有二分答案的做法通俗易懂. 默认读…...
![](/images/no-images.jpg)
健康服务管理中心/昆明网站seo优化
PHP三元运算符的使用方法技巧PHP是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。下面是小编为大家搜索整理的PHP三元运算符的使用方法技巧,希望能给大家带来帮助…...
![](http://hi.csdn.net/attachment/201011/29/0_12909946338HaF.gif)
济南网站建设工作室/seo关键词排名优化报价
蓝牙ProfileBluetooth的一个很重要特性,就是所有的Bluetooth产品都无须实现全部 的Bluetooth规范。为了更容易的保持Bluetooth设备之间的兼容,Bluetooth规范中定义了Profile。Profile定义了设备如何实现一种连接或者应用,你可以把Profile理解…...
![](/images/no-images.jpg)
淘宝网站c 设计怎么做的/google移动服务应用优化
共91个文件,32783行(含注释) 截至2022年12月16日,剩余91个文件,32783行...
![](/images/no-images.jpg)
巴塘网站建设/电商网店
(a(b-1))/b 34 / 11 (34 % 11 ! 0 ? 1 : 0) CUDA计算中,可以采用这两种方式来表示向上取整。转载于:https://www.cnblogs.com/liangliangdetianxia/p/3985002.html...
![](https://img-blog.csdnimg.cn/img_convert/bc74b9bae221854fc312bb938ca0c6d0.png)
品牌建设模型/湖南有实力seo优化
第三节 又一个EmguCV程序:人脸识别对于用惯了halcon的玩家,对emguCV其实应该是各种不习惯的,特别是数据类型,我本来准备了一个例子,结果最后一个方法的地方因为数据类型的问题,搞了半天没成功,如…...
![](/images/no-images.jpg)
做通路富集分析的网站/cba最新消息
问题描述:客户端连接数据库报错,ORA-12516: TNS: 监听程序无法找到匹配协议栈的可用句柄 解决过程:1。查看当前会话数、processes和sessions值,发现session数和2个参数的值已经非常逼近SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 …...