刪除字串中的所有相鄰重複項
導讀 | 給出由小寫字母組成的字串 S ,重複項刪除操作 會選擇兩個相鄰且相同的字母,並刪除它們。在 S 上反覆執行重複項刪除操作,直到無法繼續刪除。 |
在完成所有重複項刪除操作後返回最終的字串。答案保證唯一。
示例:
輸入:"abbaca" 輸出:"ca" 解釋: 例如,在 "abbaca" 中,我們可以刪除 "bb" 由於兩字母相鄰且相同,這是此時唯一可以執行刪除操作的重複項。之後我們得到字串 "aaca",其中又只有 "aa" 可以執行重複項刪除操作,所以最後的字串為 "ca"。
提示:
<= S.length <= 20000 S 僅由小寫英文字母組成。
解法:利用棧
解題思路: 遍歷字串,依次入棧,入棧時判斷與棧頭元素是否一致,如果一致,即這兩個元素相同相鄰,則需要將棧頭元素出棧,並且當前元素也無需入棧
解題步驟: 遍歷字串,取出棧頭字元,判斷當前字元與棧頭字元是否一致
不一致,棧頭字元進棧,當前字元進棧
一致,即棧頭字元與當前字元相同相鄰,都不需要進棧,直接進入下次遍歷即可
遍歷完成後,返回棧中字串
程式碼實現:
const removeDuplicates = function(S) { let stack = [] for(c of S) { let prev = stack.pop() if(prev !== c) { stack.push(prev) stack.push(c) } } return stack.join('') };
時間複雜度:O(n)
空間複雜度:O(n
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2791550/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 刪除字串中的所有相鄰重複項--棧與佇列字串佇列
- 力扣-1209. 刪除字串中的所有相鄰重複項 II力扣字串
- JavaScript刪除字串中重複字元JavaScript字串字元
- 刪除排序陣列中的重複項排序陣列
- mysql 刪除重複項MySql
- ES6刪除字串中重複的元素字串
- JavaScript 刪除字串重複字元JavaScript字串字元
- 刪除有序陣列中的重複項 II陣列
- c#刪除有序陣列中的重複項C#陣列
- 題目:刪除排序陣列中的重複項排序陣列
- 0026-刪除有序陣列中的重複項陣列
- 程式碼隨想錄演算法訓練營第第11天 | 20. 有效的括號 、1047. 刪除字串中的所有相鄰重複項 、150. 逆波蘭表示式求值演算法字串
- 從未排序的連結串列中刪除重複項排序
- [12][02][26] 刪除排序陣列中的重複項排序陣列
- LeetCode 26 號問題 刪除陣列中的重複項LeetCode陣列
- 每日一題 [26] 刪除排序陣列中的重複項每日一題排序陣列
- leetcode-刪除排序陣列中的重複項+移除元素LeetCode排序陣列
- LeetCode之從排序陣列中刪除重複項-SwiftLeetCode排序陣列Swift
- Leetcode[陣列] 26. 刪除排序陣列中的重複項LeetCode陣列排序
- Golang刷LeetCode 26.刪除排序陣列中的重複項GolangLeetCode排序陣列
- sqlserver中刪除重複資料SQLServer
- Oracle中刪除表中的重複資料Oracle
- LeetCode每日一題:刪除排序陣列中的重複項(No.26)LeetCode每日一題排序陣列
- mysql 刪除表中重複的資料MySql
- VSCode刪除重複的空行VSCode
- JavaScript 刪除字串中所有指定字元JavaScript字串字元
- JavaScript刪除字串中所有指定字元JavaScript字串字元
- PostgreSQL刪除表中重複資料SQL
- 程式碼隨想錄演算法訓練營,9月6日 | 232.用棧實現佇列,225. 用佇列實現棧,20. 有效的括號,1047. 刪除字串中的所有相鄰重複項演算法佇列字串
- 程式碼隨想錄演算法訓練營第十一天|232.用棧實現佇列、225.用佇列實現棧、20.有效的括號、1047.刪除字串中的所有相鄰重複項演算法佇列字串
- 每日一道演算法:刪除排序陣列中的重複項演算法排序陣列
- 我用演算法學golang(刪除有序陣列中的重複項 )演算法Golang陣列
- C# 批次刪除Excel中的重複行C#Excel
- 刪除oracle重複值Oracle
- JavaScript 刪除重複字元JavaScript字元
- 刪除重複資料
- 刪除字串中的html標籤程式碼例項字串HTML
- 刪除重複id的記錄