偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

每日算法:刪除字符串中的所有相鄰重復項

開發(fā) 前端 算法
給出由小寫字母組成的字符串 S ,重復項刪除操作 會選擇兩個相鄰且相同的字母,并刪除它們。在 S 上反復執(zhí)行重復項刪除操作,直到無法繼續(xù)刪除。

 [[419471]]

給出由小寫字母組成的字符串 S ,重復項刪除操作 會選擇兩個相鄰且相同的字母,并刪除它們。

在 S 上反復執(zhí)行重復項刪除操作,直到無法繼續(xù)刪除。

在完成所有重復項刪除操作后返回最終的字符串。答案保證唯一。

示例:

  1. 輸入:"abbaca" 
  2. 輸出:"ca" 
  3. 解釋: 
  4. 例如,在 "abbaca" 中,我們可以刪除 "bb" 由于兩字母相鄰且相同,這是此時唯一可以執(zhí)行刪除操作的重復項。之后我們得到字符串 "aaca",其中又只有 "aa" 可以執(zhí)行重復項刪除操作,所以最后的字符串為 "ca"。 

提示:

  1. <= S.length <= 20000
  2. S 僅由小寫英文字母組成。

解法:利用棧

解題思路: 遍歷字符串,依次入棧,入棧時判斷與棧頭元素是否一致,如果一致,即這兩個元素相同相鄰,則需要將棧頭元素出棧,并且當前元素也無需入棧

解題步驟: 遍歷字符串,取出棧頭字符,判斷當前字符與棧頭字符是否一致

  • 不一致,棧頭字符進棧,當前字符進棧
  • 一致,即棧頭字符與當前字符相同相鄰,都不需要進棧,直接進入下次遍歷即可

遍歷完成后,返回棧中字符串

代碼實現(xiàn):

  1. const removeDuplicates = function(S) { 
  2.     let stack = [] 
  3.     for(c of S) { 
  4.         let prev = stack.pop() 
  5.         if(prev !== c) { 
  6.             stack.push(prev) 
  7.             stack.push(c) 
  8.         } 
  9.     } 
  10.     return stack.join(''
  11. }; 
  • 時間復雜度:O(n)
  • 空間復雜度:O(n

 

責任編輯:武曉燕 來源: 三分鐘學前端
相關推薦

2021-09-03 09:41:36

字符串時間復雜度

2021-09-02 09:22:13

算法無重復字符

2021-09-10 08:31:54

翻轉字符串單詞

2023-02-26 22:33:32

字符串排列算法

2013-05-06 10:54:08

字符串字符串匹配KMP算法

2023-12-15 10:27:01

暴力匹配算法Python字符串

2016-12-30 13:37:50

字符串算法代碼

2016-12-30 13:32:24

字符串算法代碼

2020-10-15 12:30:37

Python編程語言

2010-09-03 11:35:50

2016-12-30 13:16:51

字符串算法代碼

2010-06-28 15:18:51

SQL Server

2021-11-12 09:44:03

字符串算法復雜度

2013-05-06 10:49:21

Boyer-Moore算法字符串匹配

2025-05-21 04:00:00

JavaScript前端

2015-10-29 11:55:30

.NET空白字符串方法

2015-08-13 10:42:49

.NET空白字符串

2023-04-11 08:54:57

字符串匹配算法

2010-09-06 17:30:46

SQL函數(shù)

2021-03-11 18:44:39

字符串SQL表達式
點贊
收藏

51CTO技術棧公眾號