力扣labuladong一刷day27天数组去重

力扣labuladong一刷day27天数组去重

一、316. 去除重复字母

题目链接:https://leetcode.cn/problems/remove-duplicate-letters/
思路:题目有三个要求:去重、保持顺序、字典序尽量小。去重的话我们可以使用一个boolean数组做标记,用过了就不能用了。
保持相对顺序还有字典序,使用栈,当前字符大于栈头,就往里加,小于的话,需要考虑是否弹出栈头,如果栈头是最后一次出现就不要谈了。

class Solution {public String removeDuplicateLetters(String s) {int[] nums = new int[26];boolean[] flags = new boolean[26];char[] chars = s.toCharArray();for (char c : chars) {nums[c-'a'] += 1;}Deque<Character> stack = new LinkedList<>();StringBuilder builder = new StringBuilder();for (char c : chars) {int i = c-'a';nums[i]--;if (flags[i]) continue;while (!stack.isEmpty() && stack.peek() > c) {if (nums[stack.peek()-'a'] == 0) break;flags[stack.pop()-'a'] = false;}stack.push(c);flags[i] = true;}while (!stack.isEmpty()) {builder.append(stack.pop());}return builder.reverse().toString();}
}

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

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

相关文章

前端——html拖拽原理

文章目录 ⭐前言⭐draggable属性&#x1f496; api&#x1f496; 单向拖动示例&#x1f496; 双向拖动示例 ⭐总结⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于 前端——html拖拽原理。 vue3系列相关文章&#xff1a; vue3 fastapi 实现选择目录所有文…

Android : DataBinding 简化开发 简单应用

1.导包 ViewModel 用于观察数据 // 使用androidx版本库 implementation androidx.lifecycle:lifecycle-extensions:2.1.0-alpha032.在build.gradle 添加 在android 代码块中添加 复制后点更新&#xff08;Sync Now&#xff09; android{...// 步骤1.开启data bindingdataBin…

根据已有安装的cuda配置合适的pytorch环境

目前网络上根据电脑配置安装合适的深度学习环境的帖子已经很多了&#xff0c;但是现实中会出现很久之前已经安装了对应的cuda&#xff0c;但是现在忘记了当时安装的是什么版本。本文针对这一问题展开攻略。 1 cuda安装版本查询 我们在查询自己应该安装什么版本的cuda时&#…

【模电】直流通路与交流通路

直流通路与交流通路 通常&#xff0c;在放大电路中&#xff0c;直流电源的作用和交流信号的作用总是共存的&#xff0c;即静态电流、电压和动态电流、电压总是共存的。但是由于电容、电感等电抗元件的存在&#xff0c;直流量所流经的通路与交流信号所流经的通路不完全相同。因此…

【设计模式】职责链模式设计在线文档帮助系统

职责链模式设计在线文档帮助系统 任务三&#xff1a;使用职责链模式设计在线文档帮助系统 某公司欲开发一个软件系统的在线文档帮助系统&#xff0c;用户可以在任何一个查询环境中输入查询关键字&#xff0c;如果当前查询环境下没有相关内容&#xff0c;则系统会将查询按照一定…

《微信小程序开发从入门到实战》学习四十一

4.2 云开发JSON数据库 4.2.12 更新指令 update方法除了用指定值更新字段外&#xff0c;数据库API还提供了更新指令执行更复杂的 更新的操作&#xff0c;更新指令被封装在db.command对象中的函数。如下表所示&#xff1a; set 设置字段为指定值 remove 删除字…

获取Spring容器Bean工具类

获取Spring容器Bean工具类 1、创建SpringUtils工具类2、注册 SpringUtils工具类3、如果打包的是War方式&#xff0c;可能上面两个注册工具类的方法都没用 1、创建SpringUtils工具类 public class SpringUtils implements ApplicationContextAware {private static Application…

【鸿蒙应用开发】开发环境搭建及IDE安装使用

1.下载安装包 安装包下载地址&#xff1a; 点击跳转下载页面 可以根据自己的操作系统选择对应版本下载。 本文以Windows安装为例&#xff0c;Mac安装方式相同 2. 安装 下载好后&#xff0c;打开安装包&#xff0c;进入安装界面&#xff1a; 点击Next&#xff0c;进入安…

【Vue】使用 Vue CLI 脚手架创建 Vue 项目(使用命令行创建)

前言 在开始使用Vue进行开发之前&#xff0c;我们需要先创建一个Vue项目。Vue CLI&#xff08;Command Line Interface&#xff09;是一个官方提供的脚手架工具&#xff0c;可以帮助我们快速创建Vue项目。 步骤 打开终端或命令行工具&#xff0c;运行以下命令&#xff1a; vu…

蔚碳科技联合中投会发布国内首个 ESG 尽职调查服务标准

11 月 26 日&#xff0c;蔚碳&#xff08;上海&#xff09;科技有限公司&#xff08;以下简称“蔚碳科技”&#xff09;受邀出席由深圳市人民政府主办&#xff0c;深圳市发展和改革委员会、深圳市生态环境局、龙岗区人民政府共同承办的 2023 碳达峰碳中和论坛暨深圳国际低碳城论…

Android 9.0中sdcard 的权限和挂载问题

问题&#xff1a;Android9 无法向u盘写入文件 报错&#xff1a; 2023-12-04 11:02:45.137 15640-15640 System.err com.example.permissiontest W java.io.FileNotFoundException: /storage/C5AF-1F0E/MyImages1/Image-2676.png (Permission denied)…

手机升级到iOS15.8后无法在xcode(14.2)上真机调试

之前手机是iOS14.2的系统,在xcode上进行真机测试运行良好&#xff0c;因为想要使用Xcode的Instruments功能&#xff0c;今天将系统更新到了iOS15.8 &#xff0c;结果崩了 说是Xcode和手机系统不兼容不能进行真机测试。在网上查不好些方法&#xff0c;靠谱的就是下载相关版本的…

微信小程序保存二维码的过程

1.使用wx.canvasToTempFilePath将二维码绘制到画布上。 const ctx wx.createCanvasContext(qrcodeCanvas); ctx.drawImage(qrcodePath, 0, 0, canvasWidth, canvasHeight); ctx.draw(false, () > {wx.canvasToTempFilePath({x: 0,y: 0,width: canvasWidth,height: canvasH…

05、pytest断言确定的异常

官方用例 # content of test_sysexit.py import pytestdef f():raise SystemExit(1)def test_mytest():with pytest.raises(SystemExit):f()解读与实操 ​ 标准python raise函数可产生异常。pytest.raises可以断言某个异常会发现。异常发生了&#xff0c;用例执行成功&#x…

常见的几种计算机编码格式

前言&#xff1a; 计算机编码是指将字符、数字和符号等信息转换为计算机可识别的二进制数的过程&#xff0c;正因如此&#xff0c;计算机才能识别中英文等各类字符。计算机中有多种编码格式用于表示和存储文本、字符和数据&#xff0c;实际走到最后都是二进制&#xff0c;本质一…

npm 常用命令

​ 一.npm更新所有依赖最新版本 安装组件 npm install -g npm-check-updates查看所有依赖最新版本 ncu更新所有依赖到最新版本 ncu -u 二. 查看单个依赖版本 npm info 依赖包名称 version&#xff08;查看当前最新版本&#xff09;npm info 依赖包名称 versions&#xff08…

148. 排序链表 --力扣 --JAVA

题目 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 解题思路 先将链表各节点之间的联系断开然后再进行排序&#xff1b;通过List存放节点&#xff0c;对List按照节点的值进行排序&#xff1b;遍历List重新建立联系。 代码展示 class Soluti…

CefSharp 获取POST(AJAX)、GET消息返回值(request)

CefSharp作为专门为爬虫工具开发的库比Selenium这种开发目的是页面测试工具然后用来做爬虫的工具要贴心得多。我们操作网页的时候发送或者做了某个动作提交表单之后需要知道我们的动作或者提交是否成功&#xff0c;因为有的页面会因为网络延迟问题提交失败&#xff0c;需要准确…

Python Pandas处理csv文件常用操作代码

常识 使用pandas.read_csv从csv文件中读取数据&#xff0c;对于csv中缺失的空值&#xff0c;读进dataframe会自动补为numpy.nan&#xff0c;且数据类型为float 操作 读取csv文件&#xff0c;存储为dataframe数据类型 df pandas.read_csv(csv_path)查看csv文件的dataframe的…

CPP-SCNUOJ-Problem P27. [算法课动态规划] 戳气球,小白容易理解

Problem P27. [算法课动态规划] 戳气球 有 n 个气球&#xff0c;编号为0 到 n - 1&#xff0c;每个气球上都标有一个数字&#xff0c;这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球&#xff0c;你可以获得 nums[i−1]nums[i]nums[i1] 枚硬币。 这里的…