Leetcode 5544: 执行操作后字典序最笑的字符串

2023-11-16

题目描述

给你一个字符串 s 以及两个整数 a 和 b 。其中,字符串 s 的长度为偶数,且仅由数字 0 到 9 组成。

你可以在 s 上按任意顺序多次执行下面两个操作之一:

累加:将  a 加到 s 中所有下标为奇数的元素上(下标从 0 开始)。数字一旦超过 9 就会变成 0,如此循环往复。例如,s = "3456" 且 a = 5,则执行此操作后 s 变成 "3951"。
轮转:将 s 向右轮转 b 位。例如,s = "3456" 且 b = 1,则执行此操作后 s 变成 "6345"。
请你返回在 s 上执行上述操作任意次后可以得到的 字典序最小 的字符串。

如果两个字符串长度相同,那么字符串 a 字典序比字符串 b 小可以这样定义:在 a 和 b 出现不同的第一个位置上,字符串 a 中的字符出现在字母表中的时间早于 b 中的对应字符。例如,"0158” 字典序比 "0190" 小,因为不同的第一个位置是在第三个字符,显然 '5' 出现在 '9' 之前。

 

示例 1:

输入:s = "5525", a = 9, b = 2
输出:"2050"
解释:执行操作如下:
初态:"5525"
轮转:"2555"
累加:"2454"
累加:"2353"
轮转:"5323"
累加:"5222"
累加:"5121"
轮转:"2151"
累加:"2050"​​​​​
无法获得字典序小于 "2050" 的字符串。
示例 2:

输入:s = "74", a = 5, b = 1
输出:"24"
解释:执行操作如下:
初态:"74"
轮转:"47"
累加:"42"
轮转:"24"​​​​​​​​​​​​
无法获得字典序小于 "24" 的字符串。
示例 3:

输入:s = "0011", a = 4, b = 2
输出:"0011"
解释:无法获得字典序小于 "0011" 的字符串。
示例 4:

输入:s = "43987654", a = 7, b = 3
输出:"00553311"
 

提示:

2 <= s.length <= 100
s.length 是偶数
s 仅由数字 0 到 9 组成
1 <= a <= 9
1 <= b <= s.length - 1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/lexicographically-smallest-string-after-applying-operations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

 

解题思路

class Solution {
public:
    unordered_set<string> st;
    
    void dfs(string s, int a, int b){
        if(st.find(s) != st.end()) return;
        st.insert(s);
        dfs(opA(s, a), a, b);
        dfs(opB(s, b), a, b);
    }
    
    string opA(string s, int a){
        for(int i = 1; i < s.length(); i+=2){
            s[i] = ((s[i] - '0') + a) % 10 + '0';
        }
        return s;
    }
    
    string opB(string s, int b){
        s = s.substr(b, s.length() - b) + s.substr(0, b);
        return s;
    }
    
    string findLexSmallestString(string s, int a, int b) {
        dfs(s, a, b);
        string ans(100, '9');
        for(auto &it : st){
            ans = min(ans, it);
        }
        return ans;
    }
};

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Leetcode 5544: 执行操作后字典序最笑的字符串 的相关文章

  • YUV420数据格式详解

    YUV简介 YUV格式有两大类 planar和packed 对于planar的YUV格式 先连续存储所有像素点的Y 紧接着存储所有像素点的U 随后是所有像素点的V 对于packed的YUV格式 每个像素点的Y U V是连续交叉存储的 YUV
  • 无盘游戏服务器软件,安网卫士

    2018年10月12号更新说明 请注意此版本无后台 需要注册号及收银编码的请联系客服 服务端 1 更改默认备份目录 2 当客户机无SSD施工时在BV进行显示无硬盘 3 添加游戏时 支持拖动 4 删除游戏时 取消 删除客户机文件 选项 5 取
  • gcc中-c和-o参数

    c和 o都是gcc编译器的可选参数 c表示只编译 compile 源文件但不链接 会把 c或 cc的c源程序编译成目标文件 一般是 o文件 o用于指定输出 out 文件名 不用 o的话 一般会在当前文件夹下生成默认的a out文件作为可执行
  • 次表面散射

    专题介绍 在实时渲染和离线渲染领域 对场景模型表面以及空间介质的精细化建模是增加场景真实感的重要手段 计算机图形学领域的许多科研工作者设计出一系列复杂精巧的技术理论 模拟出光线从宏观世界到微观粒子的变化规律 本期专题精选了近年来关于微表面模
  • Android 11 Activity启动流程分析

    Android 11 Activity启动流程分析 本片文章是基于Android 11版本来分析应用Activity的启动的 Activity是Android四大组件中最重要的一个 因为我们所有的页面基本上都是基于Activity开发的 所

随机推荐

  • Spring Data JPA 讲解大全

    https yangbingdong com 2019 spring boot data jpa learning
  • Spring Boot干货系列:(七)默认日志logback配置解析

    原本地址 Spring Boot干货系列 七 默认日志logback配置解析博客地址 tengj top 前言 今天来介绍下Spring Boot如何配置日志logback 我刚学习的时候 是带着下面几个问题来查资料的 你呢 如何引入日志
  • Window 能访问某些网站,不能访问一些网的解决方法

    转自 http blog sina com cn s blog 53dd443a01014pfn html 这几天遇到一个奇怪的事 一台电脑能上google 也能上baidu 就是不能上微软 ping 微软也不行 当然 这个肯定不是公司防火
  • java附近的人_es6.2.4学习----java实现附近搜索(附近的人)

    阅读本文需先了解es对地理位置的处理 本文讲述java代码实现搜索附近的人的功能 第一步 创建可存储地理位置信息的索引 public static void createIndex throws IOException RestHighLe
  • 【Xilinx AX7103 MicroBalze学习笔记7】MicroBlaze AXI4 接口之 DDR 读写实验

    目录 AXI4 协议介绍 实验任务 硬件设计 Vivado 部分 自定义 IP MicroBlaze 配置 配置 PLL IP 配置 MIG IP 添加源文件 IP 软件设计 SDK 部分 lt
  • Spring MVC 拦截器执行时机

    一 准备工作 搭建好Spring MVC环境以后 我们创建一个拦截器 名为MyInterceptor并实现HandlerInterceptor接口 实现接口方法 便于观察我们只在控制台输出对应的方法名 package com jd inte
  • Qt5的插件机制(7)--插件开发示例代码(Lower-level API)

    插件代码 接口类头文件 MyPluginInterface h cpp view plain copy ifndef INTERFACES H define INTERFACES H include
  • Nginx配置https的wordpress站点,wp-content目录下资源404解决方案

    Nginx配置https的wordpress站点 wp content目录下资源404解决方案 参考文章 1 Nginx配置https的wordpress站点 wp content目录下资源404解决方案 2 https www cnblo
  • pandas DataFrame数据的合并与拼接

    转发 Python pandas DataFrame数据的合并与拼接 merge join concat 总结得很全面 比如将一个文件夹下所有文件合并 merge import os import pandas as pd file lis
  • 数据结构——图解求单链表的长度及插入操作C语言

    单链表的插入属于单链表的基本操作之一 关于单链表的初始化的解释在我的上篇文章中已经详细说明过了 一 求单链表长度 求单链表长度的操作很简单 其实在初始化赋值或遍历那块就可以实现 但是为了让结构层次独立清楚 我还是把求长度写成了一个函数 单链
  • 在GCP上创建Cloud SQL的三种方式(Console,gcloud,Terraform)

    1 简介 Cloud SQL 是GCP上的关系型数据库 常用的有三种方式来创建 1 界面操作 2 命令行 gcloud 3 Terraform 在开始之前 可以查看 初始化一个GCP项目并用gcloud访问操作 2 GCP 操作界面 登陆G
  • git 删除右键菜单

    首先 我表示git默认的右键菜单很烦 太多项了 而我们平时用的最多的无非是一个Git Bash 删除msGit右键菜单 如果是windows 64位系统 cmd进入 C Program Files x86 Git git cheetah 目
  • 恢复U盘分区:windows自带工具diskpart

    步骤 如下图 cmd命令行处执行diskpart命令 运行该工具 然后list disk 列出所有磁盘 然后select disk xxx 选中自己的磁盘 比如下图的是磁盘2 然后clean 清空分区 然后creat partition p
  • 我们这个年龄应该要做的事

    大家好 我是一名入门的菜鸟 如果你不经意间翻开了我的文章 谢谢您 您的支持是我前进的动力 让我们一起加油 由于不是名牌大学 只是一个普普通通的专科生 所以 我想通过自己的努力来获得我想要的 我不会放弃我的梦想 我也曾幻想着我成功的时候在朋友
  • MQ如何保证消息不丢失

    如何保证消息不丢失 哪些环节会造成消息丢失 其实主要就是跨网络的环境中需要考虑消息的丢失 主要是有以下几个方面 生产者往MQ发送消息 MQ的Broker是集群有主从的 主节点把消息同步到从节点时也需要考虑消息丢失问题 消息从内存持久化到硬盘
  • Java 3D 开发

    OPENGL VRML DIRECT3D JAVA3D的比较 Java3D建立在JAVA基础之上 JAVA语言的简单性使JAVA3D的推广有了可能 它实现了以下三维显示能够用到的功能 生成简单或复杂的形体 也可以调用现有的三维形体 使形体具
  • 错误AttributeError: module ‘onnx‘ has no attribute ‘load‘的解决方式

    错误出现 在使用torch导出onnx后 使用 onnx load xxx onnx 出现 AttributeError module onnx has no attribute load 错误原因 详见https github com p
  • 隐马尔可夫模型介绍

    http blog csdn net gumpeng article details 51648259 关于隐马尔可夫的理论介绍 请参见李航博士的 统计学习方法 介绍的很详尽 下面主要通过网上查到的例子来把隐马的相关问题说清楚 以下内容都非
  • 【C语言进阶】自定义类型详解(结构体、枚举、联合)

    博客主页 小王又困了 系列专栏 C语言 人之为学 不日近则日退 感谢大家点赞 收藏 评论 目录 一 结构体 1 1结构体的认识 1 2结构体的声明 1 先声明结构体类型 再定义该类型的变量 2 在声明类型的同时定义 1 3结构体的特殊声明
  • Leetcode 5544: 执行操作后字典序最笑的字符串

    题目描述 给你一个字符串 s 以及两个整数 a 和 b 其中 字符串 s 的长度为偶数 且仅由数字 0 到 9 组成 你可以在 s 上按任意顺序多次执行下面两个操作之一 累加 将 a 加到 s 中所有下标为奇数的元素上 下标从 0 开始 数