news 2026/5/17 6:13:17

LeetCode 字典序最小子序列题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 字典序最小子序列题解

LeetCode 字典序最小子序列题解

题目描述

给定一个字符串 s,移除重复字符,使得每个字符只出现一次,并且返回字典序最小的结果。

示例

输入:s = "bcabc"
输出:"abc"

解题思路

方法:贪心

思路

  • 统计每个字符出现的次数。
  • 遍历字符串,使用栈来维护结果。
  • 如果当前字符比栈顶字符小,并且栈顶字符在后面还会出现,则弹出栈顶字符。
  • 将当前字符加入结果。

复杂度分析

  • 时间复杂度:O(n)。
  • 空间复杂度:O(1)。

代码实现

def smallest_subsequence(s): count = {} in_stack = set() stack = [] for char in s: count[char] = count.get(char, 0) + 1 for char in s: count[char] -= 1 if char in in_stack: continue while stack and char < stack[-1] and count[stack[-1]] > 0: removed = stack.pop() in_stack.remove(removed) stack.append(char) in_stack.add(char) return ''.join(stack) # 测试 def test_smallest_subsequence(): s = "bcabc" print(smallest_subsequence(s)) # 输出:"abc" if __name__ == "__main__": test_smallest_subsequence()

总结

字典序最小子序列是贪心算法的典型应用,通过栈来维护结果,确保字典序最小。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/17 6:08:11

Walrus:声明式代码仓库管理工具,简化微服务与多仓库项目协作

1. 项目概述&#xff1a;当“海象”遇见代码仓库如果你在团队协作中&#xff0c;经常被“这个项目的最新版本在哪里&#xff1f;”、“我本地跑的和测试环境怎么不一样&#xff1f;”这类问题搞得焦头烂额&#xff0c;那么你很可能需要一个更优雅的代码仓库管理方案。今天要聊的…

作者头像 李华
网站建设 2026/5/17 6:07:14

基于Apify与MCP构建另类数据自动化采集框架

1. 项目概述&#xff1a;当投资研究遇上自动化数据采集如果你在金融科技、量化投资或者数据分析领域摸爬滚打过几年&#xff0c;一定对“另类数据”这个词不陌生。它不再是华尔街对冲基金独享的秘密武器&#xff0c;而是越来越多机构和个人投资者试图在信息洪流中寻找Alpha&…

作者头像 李华
网站建设 2026/5/17 6:05:06

独立开发者如何利用Token Plan套餐降低AI应用原型成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 独立开发者如何利用Token Plan套餐降低AI应用原型成本 对于独立开发者而言&#xff0c;在将创意转化为AI应用原型的过程中&#xf…

作者头像 李华
网站建设 2026/5/17 6:05:03

Gemini CLI Auth Manager:安全便捷的API密钥管理工具详解

1. 项目概述与核心价值 最近在折腾各种AI模型API调用的时候&#xff0c;发现一个挺普遍但又有点烦人的问题&#xff1a;密钥管理。无论是OpenAI的API Key&#xff0c;还是Google的Gemini API Key&#xff0c;一旦项目多了&#xff0c;或者需要切换不同环境&#xff08;开发、测…

作者头像 李华
网站建设 2026/5/17 6:03:41

Lingoose:轻量级LLM编排框架的设计哲学与工程实践

1. 项目概述&#xff1a;从“Lingo”到“Goose”&#xff0c;一个轻量级LLM编排框架的诞生最近在折腾大语言模型应用开发的朋友&#xff0c;估计都绕不开一个核心问题&#xff1a;如何高效、优雅地编排和串联多个LLM调用、工具调用以及数据处理流程&#xff1f;当你从简单的单次…

作者头像 李华
网站建设 2026/5/17 6:03:01

Scrcpy自动化进阶:scrcpy-claw框架实现Android设备视觉控制与批量操作

1. 项目概述&#xff1a;当Scrcpy遇上“机械爪”如果你是一个Android开发者、测试工程师&#xff0c;或者只是一个喜欢折腾手机投屏到电脑上的极客&#xff0c;那你大概率听说过甚至用过Scrcpy。这个开源神器能让你通过USB或Wi-Fi&#xff0c;在电脑上以极低的延迟、高清的画质…

作者头像 李华