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

力扣每日一题:2734. 执行子串操作后的字典序最小字符串

题目链接

脑子比较笨,分三种情况考虑:

  1. 以a开头。
  2. xxa,a在中间。
    对于情况2还有两种可能:
    1. 全是a,最后一个元素需要替换成z,因为必须执行一次操作。
    2. aaaxxa,中间有一段非a,将这段改变即可。

垃圾实现代码:

class Solution {
public:string smallestString(string s) {int fidx = -1, sidx = -1;string ans = "";for (int i = 0; i < s.size(); i ++ ) {if (s[i] == 'a') {fidx = i;break;}}if (fidx == 0) {// a 开头的int j = 0;while(s[j] == 'a') {j ++;}// j 第一个不是a的元素if (j == s.size()) { // 全是afor (int i = 0; i < s.size(); i ++ ) {ans += s[i];}ans[s.size() - 1] = 'z';return ans;} else { // aaaa xxxxx afor (; j < s.size(); j ++ ) {if (s[j] == 'a') {sidx = j;break;}}for (int i = 0; i < s.size(); i ++ ) {if (i < j && s[i] !='a') {ans += (s[i] - 1);} else {ans += s[i];}}return ans;}} else if (fidx != -1 ){ // bbb afor (int i = 0; i < s.size(); i ++ ) {if (i < fidx) {ans += (s[i] - 1);} else {ans += s[i];}}return ans;} else {for (int i = 0; i < s.size(); i ++ ) {ans += (s[i] - 1);}return ans;}}
};

灵神的代码(我的看起来好傻):
从左到右找到第一个不等于 a 的字符 s[i],然后从 i 开始,把每个字符都减一,直到遍历结束或者遇到了 a。例如 abca 操作中间的子串 bc,得到答案 aaba。

细节:如果 s 全为 a,由于题目要求必须操作一次,可以把最后一个 a 改成 z。


class Solution {
public:string smallestString(string s) {int n = s.length();for (int i = 0; i < n; i++) {if (s[i] > 'a') {// 继续向后遍历for (; i < n && s[i] > 'a'; i++) {s[i]--;}return s;}}// 所有字母均为 as.back() = 'z';return s;}
};
http://www.lryc.cn/news/385323.html

相关文章:

  • C++11中std::thread的使用
  • 酷瓜云课堂(内网版)v1.1.5 发布,局域网在线学习+考试系统
  • 大数据之Hadoop部署
  • Java异常处理中的“throw”与“throws”的区别
  • 英语智汇学习系统
  • ExtractAItoTEXT 提取Adobe illustrator AI文件中的文字到文本文件翻译并写回到Adobe illustrator AI文件
  • ms17-010 ms12-020 ms-08-067
  • 【海思Hi3403V100】多目拼接相机套板硬件规划方案
  • AI的赚钱风向,彻底变了!
  • 服务器重启后jenkins任务内容不见了,并且新建任务也不见了
  • 如何选择合适的WordPress主机?
  • 面试突击:Java 集合知识体系梳理
  • AI智能管理系统设计文档
  • 干涉阵型成图参数记录【robust】
  • React Native工程运行时下载gradle超时问题
  • 本地离线模型搭建指南-LLaMA-Factory训练框架及工具
  • 数智化金融采购系统特点
  • 使用 SwiftUI 为 macOS 创建类似于 App Store Connect 的选择器
  • Python26 Lambda表达式
  • 2024年数据、自动化与智能计算国际学术会议(ICDAIC 2024)
  • cuda 学习笔记4
  • ZSWatch 开源项目介绍
  • Ansible-综合练习-生产案例
  • lombok关于构造器的注解的坑【避坑】
  • 指针并不是用来存储数据的,而是用来存储数据在内存中地址(内存操作/函数指针/指针函数)
  • iso21434认证的意义
  • 分页处理封装+分页查询题目列表
  • 每天一个项目管理概念之WBS
  • linux安装mysql8并查看密码
  • [渗透测试] 任意文件读取漏洞