刪除字串中的所有相鄰重複項
導讀 | 給出由小寫字母組成的字串 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字串字元
- JavaScript刪除字串中重複字元JavaScript字串字元
- javascript刪除字串重複字元程式碼例項JavaScript字串字元
- 刪除排序陣列中的重複項排序陣列
- ES6刪除字串中重複的元素字串
- mysql 刪除重複項MySql
- JavaScript 刪除字串重複字元JavaScript字串字元
- javascript如何刪除陣列中重複的項JavaScript陣列
- 刪除有序陣列中的重複項 II陣列
- 題目:刪除排序陣列中的重複項排序陣列
- c#刪除有序陣列中的重複項C#陣列
- js刪除陣列中重複項的程式碼例項JS陣列
- 程式碼隨想錄演算法訓練營第第11天 | 20. 有效的括號 、1047. 刪除字串中的所有相鄰重複項 、150. 逆波蘭表示式求值演算法字串
- 從未排序的連結串列中刪除重複項排序
- [12][02][26] 刪除排序陣列中的重複項排序陣列
- 每日一題 [26] 刪除排序陣列中的重複項每日一題排序陣列
- 0026-刪除有序陣列中的重複項陣列
- 如何刪除ArrayList中的重複元素
- javascript刪除陣列中重複元素程式碼例項JavaScript陣列
- sqlserver中刪除重複資料SQLServer
- Python 字串,list排序,刪除重複資料Python字串排序
- js刪除字串中所有空格程式碼例項JS字串
- Oracle中刪除表中的重複資料Oracle
- js刪除陣列中重複的元素JS陣列
- js刪除陣列中的重複元素JS陣列
- Oracle中刪除重複資料的SqlOracleSQL
- mysql 刪除表中重複的資料MySql
- LeetCode 26 號問題 刪除陣列中的重複項LeetCode陣列
- leetcode-刪除排序陣列中的重複項+移除元素LeetCode排序陣列
- PostgreSQL刪除表中重複資料SQL
- LeetCode之從排序陣列中刪除重複項-SwiftLeetCode排序陣列Swift
- js如何刪除陣列中重複的值JS陣列
- 刪除排序陣列中的重複數字排序陣列
- MYSQL中刪除重複記錄的方法薦MySql
- C# 批次刪除Excel中的重複行C#Excel
- 每日一道演算法:刪除排序陣列中的重複項演算法排序陣列