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

每日算法:有效的括號

開發(fā) 前端 算法
當(dāng)遍歷完成時,所有已匹配的字符都已匹配出棧,如果此時棧為空,則字符串有效,如果棧不為空,說明字符串中還有未匹配的字符,字符串無效。

 [[420388]]

給定一個只包括 '(' ,')' ,'{' ,'}' ,'[' ,']' 的字符串,判斷字符串是否有效。

有效字符串需滿足:

  • 左括號必須用相同類型的右括號閉合。
  • 左括號必須以正確的順序閉合。

注意空字符串可被認(rèn)為是有效字符串。

示例 1:

  1. 輸入: "()" 
  2. 輸出: true 

示例 2:

  1. 輸入: "()[]{}" 
  2. 輸出: true 

示例 3:

  1. 輸入: "(]" 
  2. 輸出: false 

示例 4:

  1. 輸入: "(]" 
  2. 輸出: false 

示例 5:

  1. 輸入: "([)]" 
  2. 輸出: false 

解答:利用棧結(jié)構(gòu)

解題思路: 將字符串中的字符依次入棧,遍歷字符依次判斷:

  • 首先判斷該元素是否是 { 、 ( 、 [ ,直接入棧
  • 否則該字符為 } 、 ) 、 ] 中的一種,如果該字符串有效,則該元素應(yīng)該與棧頂匹配,例如棧中元素有 ({, 如果繼續(xù)遍歷到的元素為 ), 那么當(dāng)前元素序列為 ({) 是不可能有效的,所以此時與棧頂元素匹配失敗,則直接返回 false ,字符串無效

當(dāng)遍歷完成時,所有已匹配的字符都已匹配出棧,如果此時棧為空,則字符串有效,如果棧不為空,說明字符串中還有未匹配的字符,字符串無效

畫圖幫助理解一下:

代碼實(shí)現(xiàn):

  1. const isValid = function(s) { 
  2.     let map = { 
  3.         '{''}'
  4.         '('')'
  5.         '['']' 
  6.     } 
  7.     let stack = [] 
  8.     for(let i = 0; i < s.length ; i++) { 
  9.         if(map[s[i]]) { 
  10.             stack.push(s[i]) 
  11.         } else if(s[i] !== map[stack.pop()]){ 
  12.             return false 
  13.         } 
  14.     } 
  15.     return stack.length === 0 
  16. }; 

時間復(fù)雜度:O(n)

空間復(fù)雜度:O(n)

責(zé)任編輯:武曉燕 來源: 三分鐘學(xué)前端
相關(guān)推薦

2020-10-16 08:09:58

算法代碼字符串

2022-01-19 09:01:28

字符串LeetCode

2021-10-19 10:09:21

三角形個數(shù)數(shù)組

2021-03-02 08:21:58

LeetCode括號

2021-10-29 07:25:32

螺旋矩陣整數(shù)

2021-10-28 19:33:36

矩陣圖像內(nèi)存

2021-11-12 09:44:03

字符串算法復(fù)雜度

2021-11-19 07:54:40

前端

2021-10-27 10:43:36

數(shù)據(jù)流中位數(shù)偶數(shù)

2021-09-30 09:58:14

路徑總和二叉樹

2021-09-03 09:41:36

字符串時間復(fù)雜度

2021-11-04 09:59:03

動態(tài)規(guī)劃策略

2021-09-02 09:22:13

算法無重復(fù)字符

2021-09-10 08:31:54

翻轉(zhuǎn)字符串單詞

2021-10-26 00:23:26

算法高頻元素

2021-09-15 07:56:32

二叉樹層次遍歷

2021-09-29 10:19:00

算法平衡二叉樹

2021-09-28 06:28:51

二叉樹公共祖先

2021-09-08 09:52:34

語言

2021-08-26 05:08:25

相鄰重復(fù)項算法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號