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

栈+贪心,LeetCode 2434. 使用机器人打印字典序最小的字符串

一、题目

1、题目描述

给你一个字符串 s 和一个机器人,机器人当前有一个空字符串 t 。执行以下操作之一,直到 s 和 t 都变成空字符串:

  • 删除字符串 s 的 第一个 字符,并将该字符给机器人。机器人把这个字符添加到 t 的尾部。
  • 删除字符串 t 的 最后一个 字符,并将该字符给机器人。机器人将该字符写到纸上。

请你返回纸上能写出的字典序最小的字符串。

2、接口描述

python3
 ​
class Solution:def robotWithString(self, s: str) -> str:
 

3、原题链接

2434. 使用机器人打印字典序最小的字符串


二、解题报告

1、思路分析

可见 字符串 t 就是一个栈,我们可以考虑在任意时刻让栈顶出栈

为了得到字典序最小结果,我们何时不得不出栈呢?

当栈顶不大于剩余字符的最小值时,我们不得不出栈

那么维护栈,并模拟即可

2、复杂度

时间复杂度: O(N)空间复杂度:O(N)

3、代码详解

python3
 ​
from string import ascii_lowercase
from collections import Counterclass Solution:def robotWithString(self, s: str) -> str:n = len(s)mi = 0res = []cnt = Counter(s)st = []for x in s:cnt[x] -= 1while mi < 25 and cnt[ascii_lowercase[mi]] == 0:mi += 1st.append(x)while st and st[-1] <= ascii_lowercase[mi]:res.append(st.pop())return ''.join(res)
 ​

http://www.mrgr.cn/news/11581.html

相关文章:

  • 新手必备20个CAD实用操作技巧,学完这些轻松拿捏CAD!
  • 从“云、边、端”的统一管理,为传统工厂数字化转型赋能的智慧地产开源了
  • HW数通IA笔记2-网络参考模型
  • 新疆旅游今年为什么这么火热?
  • Android13 Launcher3修改Workspace布局(layout)
  • 【使用 Python 进行截图的两种方法】
  • 数据脱密Huntool.DesensitizedUtil
  • 【国产游戏的机遇与挑战】
  • 【Leetcode 2068 】 检查两个字符串是否几乎相等 —— 击败100%
  • OpenCV几何图像变换(6)计算反转仿射变换函数invertAffineTransform()的使用
  • Java14 反射
  • SLAM十四讲ch3课后习题
  • 尝试给OpenHarmony4.0增加可以在动态库中使用的日志模块
  • 商业律师事务所借助 DocuSign 解决方案加快了 QES 和身份识别流程 | 电子签约律师事务解决方案
  • Redis哨兵(sentinel)
  • NOsql数据库Redis
  • 深度学习入门-04
  • qt creator自动运行单元测试
  • 计算机网络 TCPUDP、IP、ARPRARP、NAT总结
  • 国产游戏技术能否引领全球?