2024-06-22力扣每日一题

链接:

2663. 字典序最小的美丽字符串

题意

略

解:

要求字符串内不存在任何长度为 2 或更长的回文子字符串,则在任意位置不存在aa或aba形式

由于要被给定字符串字典序大,且找到符合条件的字典序最小字符串,则竟可能对靠后的字符做加法和进位

莽一波一直处理最后一个字符,寄的理所当然哈哈

因为默认给的是符合无回文的字符串,所以没被更改过的字符都不考虑,从最靠前的被修改过的字符开始判断它和前面是否构成回文,如果回文则字符加一,如不回文则处理靠后的字符。

代码很丑陋,看看注释得了

实际代码:

c++ 复制代码
#include<bits/stdc++.h>
using namespace std;
string smallestBeautifulString(string s, int k)
{
    int lg=s.length(),mao=lg-1,zt=1;

    while(true)
    {
        if(zt)//第一次无条件执行 
        {
            s[mao]++;
        }
        
        if(mao>1)
        {
            if(s[mao]==s[mao-1] || s[mao]==s[mao-2])
            {
                while(s[mao]==s[mao-1] || s[mao]==s[mao-2]) s[mao]++;//有回文则++
            }
            else if(!zt) mao++;//无回文则处理后面的字符
        }
        else if(mao>0)
        {
            if(s[mao]==s[mao-1])
            {
                while(s[mao]==s[mao-1]) s[mao]++;
            }
            else if(!zt) mao++;
        }
        else if(!zt) mao++;
        if(zt) zt=0;
        
        //cout<<"mao:"<<mao<<endl; 
        if(mao>=lg) break;
        
        //cout<<"s[mao]:"<<s[mao]<<endl; 
        while(s[mao]-'a'+1>k)//进位则需要处理新的字符
        {
            s[mao]-=k;
            mao--;
            if(mao<0) return "";//首字符还进位则无符合条件字符串
            else s[mao]++;
        }
    }
    
    return s;
}
int main()
{
    string s;
    int k;
    
    cin>>s>>k;
    
    string ans=smallestBeautifulString(s,k);
    cout<<ans<<endl;
    return 0;
}

限制:

  • 1 <= n == s.length <= 105
  • 4 <= k <= 26
  • s 是一个美丽字符串
相关推荐
stsdddd2 小时前
YOLO算法建筑工地安全帽目标检测数据集16881张:标注核对笔记
算法·yolo·目标检测
CV爱数码2 小时前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
yuniko-n3 小时前
【算法】约瑟夫环问题
java·算法
l1t3 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
Nil2083 小时前
LeetCode 283移动零
数据结构·算法·leetcode
CQU_JIAKE3 小时前
10.18【A】
算法
LMT流氓兔4 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain
文丑颜不良啊4 小时前
LeetCode226~250题目解析
java·leetcode
物联网软硬件开发-轨物科技5 小时前
【轨物方案】深度解读开关柜智能感知及一键顺控专家系统
大数据·运维·网络·人工智能·算法·机器人
行者全栈架构师5 小时前
我用 TRAE Work 把桌游之夜搬进了浏览器:一个计分器的从创意到上线
前端·算法·架构