【LeetCode每日一題】單調棧316去除重復字母

題目:去除重復字母

給你一個字符串 s ,請你去除字符串中重復的字母,使得每個字母只出現一次。需保證 返回結果的字典序最小(要求不能打亂其他字符的相對位置)。

示例 1:

輸入:s = “bcabc”
輸出:“abc”
示例 2:

輸入:s = “cbacdcbc”
輸出:“acdb”

其實這道題我覺得和 402. 移掉 K 位數字很像的,這道題的題解可以看一下單調棧的總結與案例復盤。

思路:

402 是構造單調遞增棧的過程中,通過k的數量判斷要不要將棧頂元素彈出。
316 是構造單調遞增棧的過程中,通過 尚未遍歷的元素中(restMap)是否還有和棧頂元素重復的元素,如果沒有了,那么棧頂元素不可以去除,否則可以去除。
316 還需要判斷一下棧內(usedMap)是否有這個元素,如果已經有了,也不可以入棧。
316 中需要用兩個map來維護棧內的元素個數 和 尚未遍歷的元素個數。

var removeDuplicateLetters = function(s) {let restMap = new Map();let usedMap = new Map();for(let i = 0; i < s.length; i++){if(!restMap.has(s[i])){restMap.set(s[i],0);}  restMap.set(s[i],restMap.get(s[i])+1);   usedMap.set(s[i], 0);}let stack = [];for(let i = 0; i < s.length; i++){restMap.set(s[i],restMap.get(s[i])-1);// 如果棧里已經有了就不要再入棧了,比如棧里有ab,如果當前元素是a,// 那么a就會將b彈出,不會彈出a,又因為棧里已經有a,所以當前元素也不會將元素壓入棧中,// 因此無緣無故彈出一個元素,我們一定要清楚,彈出元素是為了不破壞單調性,不彈也不會破環。if(usedMap.get(s[i]) === 1){continue;}//構造單調遞增while(stack.length && s[i] < stack[stack.length-1] && restMap.get(stack[stack.length-1]) > 0){let top = stack.pop();usedMap.set(top,0);} // 棧里沒有才能往里面放stack.push(s[i]);usedMap.set(s[i],1);}return stack.join('');};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697538.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697538.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697538.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker自定義網絡實現容器之間的通信

Background docker原理 docker是一個Client-Server結構的系統&#xff0c;Docker的守護進程運行在主機上。通過Socket從客戶端訪問。docker核心三大組件&#xff1a;image–鏡像、container-容器、 repository-倉庫。docker使用的cpu、內存以及系統內核等資源都是直接使用宿主…

python 函數-04-參數收集-帶1個或2個星號

一個函數&#xff0c;至多可以帶一個一星參數&#xff08;收集位置參數&#xff09;&#xff0c;加上一個二星參數&#xff08;收集關鍵字參數&#xff09;。 01 一個星號參數 入參為不定參數&#xff08;參數個數不確定&#xff09;&#xff0c;此時在定義參數時&#xff0c…

最簡單方式把jar打包成Windows服務

廢話 &#x1f622; 將JAR文件轉化為Windows服務是一種高效且常見的Java應用部署策略。這種轉變賦予了Java應用程序在Windows操作系統上以無界面后臺服務模式運行的能力&#xff0c;從而實現了持續、穩定且可靠的功能提供。這種部署方式不僅提升了應用的可用性&#xff0c…

Python學習筆記——類(編程風格)

編寫的應用比較復雜時&#xff0c;特別是大型項目&#xff0c;團隊分工協同&#xff0c;尤其要注意編程風格。 &#xff08;1&#xff09;類名應采用駝峰命名法&#xff0c;即將類名中的每個單詞的首字母都大寫&#xff08;類名的首字母是大寫的&#xff09;&#xff0c;并且不…

導入excel某些數值是0

目錄 導入excel某些數值是0數據全部都是0原因解決 部分數據是0原因解決 導入excel某些數值是0 數據全部都是0 有一列“工單本月入庫重量”全部的數據都是0 原因 展示的時候&#xff0c;展示的字段和內表需要展示的字段不一致&#xff0c;導致顯示的是0。 解決 修改展示的字…

kubernetes面試題及核心知識點

無狀態負載deployment有狀態管理 &#xff1a; config配置文件 secret密碼文件 內置volumn插件 1、emptyDir宿主機的存儲為容器分配資源。臨時儲存&#xff0c;隨著pod的刪除而消失&#xff0c; 2、hostPath宿主機的存儲為容器分配資源。不會隨著pod的刪除而消失&#xf…

Video generation models as world simulators-視頻生成模型作為世界模擬器

原文地址&#xff1a;Video generation models as world simulators 我們探索在視頻數據上進行大規模生成模型的訓練。具體來說&#xff0c;我們聯合訓練文本條件擴散模型&#xff0c;同時處理不同持續時間、分辨率和長寬比的視頻和圖像。我們利用一個在視頻和圖像潛在編碼的時…

AGI|AI到底如何生成視頻?Sora究竟為何能引爆科技圈?

目錄 一、AI生成視頻引發新浪潮 二、生成方法及難點 三、Sora的突破進展 &#xff08;一&#xff09;可生成不同尺寸視頻 &#xff08;二&#xff09;可生成1分鐘時長視頻 &#xff08;三&#xff09;圖片生成視頻 &#xff08;四&#xff09;場景一致性 &#xff08;五…

Window部署Exceptionless

Exceptionless Elasticsearch 版本&#xff1a; Exceptionless&#xff1a;8.1.0 Elasticsearch&#xff1a;7.17.5 JDK&#xff1a;11.0.10 目錄 一、Elasticsearch運行 二、 Exceptionless 一、Elasticsearch運行 bin目錄下elasticsearch.bat 直接運行 訪問 http://lo…

使用gstreamer和opencv實時識別LED數碼管數字的測試demo(QT)

效果演示: 效果1:靜態識別 效果2:動態實時識別 可以看到,雖然不太穩定,但是好歹還是識別出來了的,就是需要調參,然鵝我不是專業的,目前還沒有調好。。。 T_T 先這樣吧。以后再說。 覺得文章質量可以的,請點個贊哦,謝謝。 前言 最近需要完成使用op…

yum方式快速安裝mysql

問題描述 使用yum的方式簡單安裝了一下mysql&#xff0c;對過程進行簡單記錄。 步驟 ①安裝wget和vim sudo yum -y install wget vim②下載mysql的rpm包 sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm③升級和更新rpm包 sudo rpm -Uv…

ElementUI組件的安裝和使用

Element UI 是一款基于 Vue 2.0 的桌面端組件庫&#xff0c;主要用于快速構建網站的前端部分。它提供了豐富的組件&#xff0c;如按鈕、輸入框、表格、標簽頁等&#xff0c;以及一些布局元素&#xff0c;如布局容器、分割線等。Element UI 的設計風格簡潔&#xff0c;易于上手&…

【前端素材】推薦優質后臺管理系統Airmin平臺模板(附源碼)

一、需求分析 系統定義 后臺管理系統是一種用于管理和監控網站、應用程序或系統的在線工具。它通常是通過網頁界面進行訪問和操作&#xff0c;用于管理網站內容、用戶權限、數據分析等。后臺管理系統是網站或應用程序的控制中心&#xff0c;管理員可以通過后臺系統進行各種管…

第四十二回 假李逵翦徑劫單身 黑旋風沂嶺殺四虎-python讀寫csv和json數據

李逵答應了宋江三件事&#xff1a;不可吃酒&#xff0c;獨自前行&#xff0c;不帶板斧。李逵痛快答應了&#xff0c;挎一口腰刀&#xff0c;提著樸刀&#xff0c;帶了一錠大銀子&#xff0c;三五個小銀子就下山去了。 宋江放心不下&#xff0c;于是請同鄉朱貴也回家一趟&#…

arcgisPro制圖輸出

1、設置地圖底圖 2、導入數據 3、 設置圖形顏色&#xff0c;如下&#xff1a;右鍵“浙江省”數據層&#xff0c;選擇符號系統 4、在右側可看到打開的符號系統欄&#xff0c;進行如下設置: 5、移除“其他所有值”項&#xff0c;如下&#xff1a; 6、設置圖形輪廓&#xff0c;如下…

【MATLAB】CEEMD_ MFE_SVM_LSTM 神經網絡時序預測算法

有意向獲取代碼&#xff0c;請轉文末觀看代碼獲取方式~也可轉原文鏈接獲取~ 1 基本定義 CEEMD_MFE_SVM_LSTM神經網絡時序預測算法是一種結合了多種先進技術的復雜預測方法&#xff0c;旨在提高時序預測的準確性和穩定性。下面是對該算法的詳細介紹&#xff1a; CEEMD&#xff…

ES項目應用

配置: ES存儲了2-3億條&#xff0c;幾百GB ES集群有5 個節點 2主2副 ES返回數據量窗口大小設置 index.max_result_window 深度翻頁 1.from size 方式 2.scroll相當于維護了一份當前索引段的快照信息&#xff0c;這個快照信息是你執行這個scroll查詢時的快照。在這個查詢后的任…

kali虛擬機橋接模式快速設置

第一步&#xff1a;選擇 虛擬機 > 設置 > 虛擬機設置&#xff0c;設置橋接模式 不選擇復制物理網絡連接狀態選項&#xff1a; 如果采用DHCP的方式來分配IP地址&#xff0c;當電腦網絡從有線或無線網絡之間進行移動時&#xff0c;DHCP會重新分配ip地址&#xff0c;即虛擬機…

泰迪智能科技大模型數據智能實驗室

自2022年11月ChatGPT問世以來&#xff0c;大模型開始備受關注&#xff0c;科技巨頭們紛紛推出大模型實驗室解決方案。大模型的價值不知在于互聯網場景&#xff0c;而在于大模型能力垂直化&#xff0c;能夠與具體的業務需求深度融合。 大模型實驗室是在學校現有的實驗室建設基礎…

leetcode hot100 買賣股票的最佳時機1

本題之前采用貪心算法來解決&#xff0c;現在可以采用動態規劃來解決&#xff0c;通過dp數組記錄每次的狀態從而獲取到最大的利潤。 這里dp數組定義為二維數組 dp[price.length][2]&#xff0c;其中price.length表示第i天&#xff0c;[2]其中有0/1兩種狀態&#xff0c;[0]表示…