2024-06-22力扣每日一题

链接:

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

题意

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

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

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

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

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

实际代码:

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 是一个美丽字符串
相关推荐
IT探索5 分钟前
Linux 查找文件指令总结
linux·算法
Lumos1861 小时前
51单片机从零到实战(完结)——后续学习路线建议
算法
稚南城才子,乌衣巷风流1 小时前
DFS序详解:原理、应用与实现
算法·深度优先·图论
稚南城才子,乌衣巷风流1 小时前
动态树(Dynamic Tree)数据结构详解
数据结构·算法
变量未定义~2 小时前
最小生成树1(Prim模板)、最小生成树2(kruskal模板)、最近公共祖先(模板)
算法
这就是佬们吗2 小时前
Python入门⑤-异常处理、文件操作与实战项目
开发语言·数据库·python·算法·pycharm
LONGZETECH2 小时前
新能源汽车充电设备装配与调试仿真教学软件 技术架构与核心实现解析
大数据·算法·3d·unity·架构·汽车
自学小白菜2 小时前
关于提升机器学习算法做预测回归任务精度的方法分享
算法·机器学习·回归·提升精度
学废了wuwu2 小时前
从入门到实战:深入浅出模型压缩三大核心——剪枝、彩票假设与知识蒸馏
人工智能·算法·剪枝
小肝一下2 小时前
3. 单链表
c语言·数据结构·c++·算法·leetcode·链表·dijkstra