当前位置: 首页 > 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);}
}

相关文章:

  • 快速生成基于vue-element的后台管理框架,实现短时间二次开发
  • 关于飞浆文字识别技术的运用
  • [手机Linux PostmarketOS]一,1加6T真正的手机Linux系统
  • MacOS安装redis
  • 获取时间戳是使用System.currentTimeMillis()还是使用new Date().getTime()(阿里开发规范)?
  • 基于 Java 实现的智能客服聊天工具模拟场景
  • React 使用 Zustand 详细教程
  • Java项目:基于SSM框架实现的人事管理系统【ssm+B/S架构+源码+数据库+开题报告+毕业论文】
  • 将WIN10的wifi上网分享给以太网接口
  • 【动态规划】简单多状态dp问题
  • Node.js实现短链接(ShortLink):shortid、epxress让URL更简单
  • 一文解释IO端口与网络端口
  • 游戏高度可配置化(一)通用数据引擎(data-e)及其在模块化游戏开发中的应用构想图解
  • Springboot整合MinIO实现系统文件的便捷式管理实例
  • 如何在Java中使用注解:自定义注解的实现
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 2019.2.20 c++ 知识梳理
  • angular2 简述
  • Babel配置的不完全指南
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • python docx文档转html页面
  • SpringBoot几种定时任务的实现方式
  • 笨办法学C 练习34:动态数组
  • 飞驰在Mesos的涡轮引擎上
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 实战|智能家居行业移动应用性能分析
  • 一道闭包题引发的思考
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 回归生活:清理微信公众号
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​configparser --- 配置文件解析器​
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #pragma data_seg 共享数据区(转)
  • #Ubuntu(修改root信息)
  • (+4)2.2UML建模图
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (day6) 319. 灯泡开关
  • (MATLAB)第五章-矩阵运算
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (三十五)大数据实战——Superset可视化平台搭建
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • (转)c++ std::pair 与 std::make
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • /tmp目录下出现system-private文件夹解决方法
  • [4]CUDA中的向量计算与并行通信模式
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [BZOJ1008][HNOI2008]越狱
  • [bzoj1912]异象石(set)