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 是一个美丽字符串
相关推荐
lkforce4 分钟前
MiniMind学习笔记(零)--基础概念
人工智能·算法·机器学习·token·分词器·minimind·词汇表
6Hzlia5 分钟前
【Hot 100 刷题计划】 LeetCode 94. 二叉树的中序遍历 | C++ 递归法 & 迭代法
算法
nike0good8 分钟前
The 4th Universal Cup GP of Kyoto, April 4-5, 2026 题解
算法·深度优先·图论
澈20742 分钟前
高效查找算法详解:从顺序到哈希
数据结构·算法·哈希算法
kobesdu1 小时前
开源3D激光SLAM算法的异同点、优劣势与适配场景总结
算法·3d·机器人·ros
ZC跨境爬虫1 小时前
3D 地球卫星轨道可视化平台开发 Day13(卫星可视化交互优化+丝滑悬停聚焦)
前端·算法·3d·json·交互
水木流年追梦1 小时前
CodeTop Top 100 热门题目(按题型分类)
算法·leetcode
Tisfy1 小时前
LeetCode 1722.执行交换操作后的最小汉明距离:连通图
算法·leetcode·dfs·题解·深度优先搜索·连通图
不知名的老吴1 小时前
案例教学:最长递增子序列问题
数据结构·算法·动态规划
样例过了就是过了1 小时前
LeetCode热题100 杨辉三角
c++·算法·leetcode·动态规划