贪心算法(五) ----贪心+单调栈,poj-最佳加油方案

news2024/9/22 11:28:19

力扣316 ---去除重复字母

题目

给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。

示例 1:

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

示例 2:

输入:s = "cbacdcbc"
输出:"acdb"

提示:

  • 1 <= s.length <= 104
  • s 由小写英文字母组成

注意:该题与 1081 . - 力扣(LeetCode) 相同

分析

代码 

class Solution:
    def removeDuplicateLetters(self, s: str) -> str:
        char_count = [0] * 256  # 创建一个数组来统计字符出现的次数
        # 遍历字符串s,统计其中每个字符的数量
        for char in s:
            char_count[ord(char)] += 1

        stack = []  # 使用列表stack,用来处理字符串
        stack_map = [0] * 256  # 保存栈中字符的数量

        for i in range(len(s)):
            # 该字符对应的剩余数量减1
            char_count[ord(s[i])] -= 1
            if stack_map[ord(s[i])] != 0:  # 如果栈中已经包含这个字符
                continue  # 忽略掉它

            # 使用循环判断是否需要从栈中弹出字符
            while stack and stack[-1] > s[i] and char_count[ord(stack[-1])] > 0:
                stack_map[ord(stack.pop())] -= 1  # 弹出栈顶字符,并更新stack_map

            stack.append(s[i])  # 将当前字符入栈
            stack_map[ord(s[i])] += 1  # 更新stack_map

        result = ''.join(stack)  # 将栈中的字符拼接成字符串
        return result  # 返回result

poj --2431

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1946933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA的pom.xml显示ignored 的解决办法

问题&#xff1a; idea中创建Maven module时&#xff0c;pom.xml出现ignored。 原因&#xff1a; 相同名称的module在之前被创建删除过&#xff0c;IDEA会误以为新的同名文件是之前删除掉的&#xff0c;将这个新的module的pom.xml文件忽略掉显示ignored. 解决&#xff1a; 在…

【Java有关链表OJ题】-- 单链表的逆置、获取链表的中间节点、获取倒数第k个节点、合并两个有序链表

1. 单链表的逆置 思路&#xff1a;通过头插节点来完成单链表的逆置&#xff0c;定义一个cur指向head的下一个节点&#xff0c;curNext记录cur的next节点&#xff0c; 当链表为空&#xff0c;即头节点head为空时&#xff0c;返回null。当链表只有一个head节点时&#xff0c;返…

【MySQL进阶之路 | 高级篇】数据并发问题与四种隔离级别

1. 事务隔离级别 MySQL是一个客户端/服务器架构的软件&#xff0c;对于同一个服务器来说&#xff0c;可以有若干个客户端与之连接&#xff0c;每个客户端与服务器连接之后&#xff0c;就可以称之为一个会话。每个客户端都可以在自己的会话中向服务器发出请求语句&#xff0c;一…

【电子通识】第一、二、三代半导体都是什么?

半导体指常温下导电性能介于导体与绝缘体之间的材料。半导体在集成电路、消费电子、通信系统、光伏发电、照明应用、大功率电源转换等领域应用。 如二极管就是采用半导体制作的器件。无论从科技或是经济发展的角度来看&#xff0c;半导体的重要性都是非常巨大的。 今日大部分的…

opencv入门(二)

文章目录 一、图像的基础操作1.1 图像ROI1.1.1 图像ROI理论介绍1.1.2 图像ROI的具体实现1.2 通道拆分与合并1.2.1 split():拆分通道1.2.2 merge():合并彩色分量图像1.3 图像的加法运算1.3.1 Numpy加法1.3.1 OpenCV加法1.4 图像融合1.4.1 图像加法1.4.2 图像融合1.4.3 注意点1…

sql server 连接报错error 40

做个简单的记录,造成40 的原因有很多,你的错误并不一定就是我遇到的这种情况. 错误描述: 首先我在使用ssms 工具连接的时候是可以正常连接的,也能对数据库进行操作. 在使用 ef core 连接 Sql Server 时报错: Microsoft.Data.SqlClient.SqlException (0x80131904): A network-r…

VIsual Studio:为同一解决方案下多个项目分别指定不同的编译器

一、引言 如上图&#xff0c;我有一个解决方案【EtchDevice】&#xff0c;他包含两个&#xff08;甚至更多个&#xff09;子项目&#xff0c;分别是【DeviceRT】和【DeviceWin】&#xff0c;见名知意&#xff0c;我需要一个项目编译运行在RTOS上&#xff0c;譬如一个名叫INTime…

Mailspring搭建安装教程:打造个性邮件体验

Mailspring搭建安装教程步骤&#xff01;如何选择电子邮件服务商&#xff1f; Mailspring作为一款功能强大、界面友好的邮件客户端&#xff0c;成为了许多用户的首选。AokSend将为大家提供详细的Mailspring搭建安装教程&#xff0c;帮助您打造个性化的邮件体验。 Mailspring搭…

智能APK动态防护系统:自动重命名与签名,实现安全分发

本智能APK动态防护系统通过集成先进的自动化处理技术&#xff0c;实现了对APK文件的深度定制化与安全性强化。系统核心功能包括自动反编译APK、随机生成包名与签名、代码混淆等&#xff0c;最终回编译生成独一无二的APK安装包。这一过程每5分钟&#xff08;时间间隔可自定义&am…

从java到JDBC学习笔记

java编写代码入门 1. 简介 JDK : Java SE Development Kit Java开发工具 2.第一段代码 main快捷键 msvm加回车 控制台输出 sout回车 删除一行 Ctrly 复制一行 Ctrld 空构造器 altinsert 撤销快捷键 CtrlZ 首先输入psvm创建主程序&#xff0c;我们的代码在这里边编写。…

java面向对象进阶进阶篇--《抽象类和抽象方法》

个人主页VON 所属专栏java从入门到起飞 目录 个人主页​编辑我的主页​编辑 一、简介 抽象方法&#xff1a; 抽象类&#xff1a; 概述&#xff1a; 二、抽象类 特点和用途 示例&#xff1a; Animal类 Dog类 Flog类 Sheep类 Text类 结果展示&#xff1a; 三、抽象方…

鸿蒙OpenHarmony Native API【raw_dir.h与raw_file.h】 头文件

raw_dir.h Overview Related Modules: [Rawfile] Description: 提供rawfile目录相关功能 功能包括遍历和关闭rawfile目录 Since: 8 Version: 1.0 Summary Typedefs Typedef NameDescription[RawDir]typedef struct [RawDir] 提供对rawfile目录的访问 Functions Fun…

Centos7下安装配置最新版本Jenkins

1、基础环境配置 1.1 服务器下载Jenkins安装包 下载地址&#xff1a;Download and deploy 下载命令&#xff1a;wget https://get.jenkins.io/war-stable/2.452.3/jenkins.war 1.2 服务器安装配置JDK Jenkins 是基于 Java 语言开发的&#xff0c;因此需要 Java 运行环境支…

【Mysql】Docker下Mysql8数据备份与恢复

[TOC] 【Mysql】Docker下Mysql8数据备份与恢复 1 创建Mysql容器 格式 docker run -d --name容器名称 -p 宿主端口号:3306 -e MYSQL_ROOT_PASSWORDmysql密码 -e MYSQL_PASSWORDmysql密码 -e TZAsia/Shanghai -v 宿主目录-数据:/var/lib/mysql -v 宿主目录-备份数据:/back…

在vue中优雅地异步引入(懒加载)腾讯地图API

背景 接到一个需求需要在网站首页显示使用腾讯地图展示公司所在地。一开始我直接全局引入了腾讯地图js&#xff0c;结果发现在用户打开登陆页面的时候首页比较缓慢&#xff0c;为了提高用户登陆的加载效率&#xff0c;需要优化为异步引入。 思路 根据官网的示例&#xff0c;…

2024世界技能大赛某省选拔赛“网络安全项目”B模块--操作系统取证解析

2024世界技能大赛某省选拔赛“网络安全项目”B模块--操作系统取证解析 任务一、操作系统取证解析:总结:任务一、操作系统取证解析: A 集团某电脑系统被恶意份子攻击并控制,怀疑其执行了破坏操作,窃取了集团内部的敏感信息,现请分析 A 集团提供的系统镜像和内存镜像,找到…

缓存穿透,缓存击穿,缓存雪崩

目录 介绍 缓存穿透 缓存击穿 缓存雪崩 原因 影响 解决方案 缓存穿透 防止缓存穿透->空值缓存案例 缓存击穿 使用互斥锁解决缓存击穿 介绍 缓存穿透 定义&#xff1a;缓存穿透是指用户查询数据&#xff0c;缓存和数据库中都不存在该数据&#xff08;一般是发起恶意…

Nginx笔记(一)

一、Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 [13]&#xff0c;同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点&#xff08;俄文&#xff1a;Рамблер&#xff09;开发的&#xff0c;公开版本1.…

maven项目容器化运行之3-优雅的利用Jenkins和maven使用docker插件调用远程docker构建服务并在1Panel中运行

一.背景 在《maven项目容器化运行之1》中&#xff0c;我们开启了1Panel环境中docker构建服务给到了局域网。在《maven项目容器化运行之2》中&#xff0c;我们基本实现了maven工程创建、远程调用docker构建镜像、在1Panel选择镜像运行容器三大步骤。 但是&#xff0c;存在一个问…

影视剪辑(自媒体)工具下载地址

一、资源下载网址 片库&#xff08;资源较全&#xff09;&#xff1a; 中国大陆线路&#xff1a;https://www.btnull.nuhttps://www.btnull.nuhttps://www.btnull.inhttps://www.btnull.in 其他网址&#xff1a; https://www.btnull.comhttps://www.btnull.com…