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

力扣-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" 的字符串。

思路

前提:如果字符串不包含任何长度为 2 和 3 的回文子字符串,则该字符串根本不包含任何回文子字符串。

题目简单来说就是在有限的字母范内给你一个没有回文子字符串的字符串,返回比这个字符串大的最小字符串,注意要在范围内,否则返回空字符串。

解题方法

由于原字符串已经是美丽字符串,所以我们只需要将最后一位加1,进行判断,首先看有没有超出字母范围,如果超出,赋最小的值a,进位,判断是否能进位,不能返归空字符串。再判断是否构成回文字符串,i>0&&str[i]==str[i-1]||i>1&&str[i]==str[i-2]是的话,数值加一,否则在i<n里判断后面是否构成回文字符串。构成就加1,不构成i++,每一次都会判断有没有超出字母范围,如果超出,赋最小的值a,进位。

代码

class Solution {public String smallestBeautifulString(String s, int k) {int n=s.length();k=k+'a';char[] str=s.toCharArray();int i=n-1;str[i]++;while(i<n){if(str[i]==k){if(i==0){return "";}str[i]='a';str[--i]++;}else if(i>0&&str[i]==str[i-1]||i>1&&str[i]==str[i-2]){str[i]++;}else{i++;}}return new String(str);}
}

http://www.lryc.cn/news/380635.html

相关文章:

  • CausalMMM:基于因果结构学习的营销组合建模
  • 编译 CUDA 程序的基本知识和步骤
  • [SAP ABAP] 排序内表数据
  • 【UML用户指南】-21-对基本行为建模-活动图
  • 【web2】jquary,bootstrap,vue
  • 独角兽品牌獭崎酱酒:高性价比的酱香之选
  • java打印菱形和空心菱形
  • Day10 —— 大数据技术之Scala
  • Linux应用系统快速部署:docker快速部署linux应用程序
  • 三目运算符中间的表达式可以省略吗(a?:c)?
  • android 彩虹进度条自定义view实现
  • 免费一年SSL证书申请——建议收藏
  • 【docker1】指令,docker-compose,Dockerfile
  • Flutter中的异步和多进程
  • 学习C++第二天
  • 解析Java中1000个常用类:AbstractSet类,你学会了吗?
  • Nginx基础概念和常用操作
  • 圈复杂度是什么?go语言调整圈复杂度举例
  • 设计模式4-模版方法
  • yii2 ActiveForm使用技巧
  • 【面试】基本数据类型的包装类缓存
  • 6月20日(周四)A股行情总结:A股险守3000点,恒生科技指数跌1.6%
  • Parallels Desktop 19 for mac破解版安装激活使用指南
  • JExcel API使用笔记
  • springCloudAlibaba之分布式网关组件---gateway
  • Springboot项目jar加密
  • 【React】高阶组件
  • 全面理解-Flutter(万字长文,深度解析)
  • RabbitMQ实战宝典:从新手到专家的全面探索
  • 6月21日(周五)AH股总结:沪指失守3000点,恒生科技指数跌近2%,多只沪深300ETF午后量能显著放大