精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

算法圖解:如何判斷括號是否有效?

開發 前端 算法
經過前面文章的學習,我想很多朋友已經看出來了,我接下來要寫的是一個關于「算法圖解」的系列文章,中間可能會穿插少量的其他類型的文章,但「算法和數據結構」會是我今年文章輸出的重點內容。

[[346613]]

本文轉載自微信公眾號「Java中文社群」,作者磊哥 。轉載本文請聯系Java中文社群公眾號。  

今天要講的這道題是 bilibili 今年的筆試真題,也是一道關于棧的經典面試題。

經過前面文章的學習,我想很多朋友已經看出來了,我接下來要寫的是一個關于「算法圖解」的系列文章,中間可能會穿插少量的其他類型的文章,但「算法和數據結構」會是我今年文章輸出的重點內容。

我在寫這個算法系列的時候會注意兩個問題:

  • 保證算法的解題思路大家都能看懂,因此我會以圖片的形式進行思路講解,這樣更直觀、更易于理解;
  • 在介紹完一個知識點之后,會進行大量的練習,以鞏固所學的內容,比如當我講完「棧」結構之后,我會圍繞著「棧」做一系列的經典面試題練習。

學習算法最關鍵的是掌握解題的思路,只要思路對了,編寫代碼只是時間的問題。

那么接下來,我們就進入今天的正式內容...

題目

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

有效字符串需滿足:

  • 左括號必須用相同類型的右括號閉合。
  • 左括號必須以正確的順序閉合。
  • 注意空字符串可被認為是有效字符串。

示例 1:

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

示例 2:

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

示例 3:

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

示例 4:

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

示例 5:

  1. 輸入: "{[]}" 
  2. 輸出: true 
  3. LeetCode 地址:https://leetcode-cn.com/problems/valid-parentheses 

解題思路

這道題考察的是就是驗證括號的對稱性,比如“([{}])”這種字符串就是正確的,應該返回 true,而“([{})]”這種字符串就是錯誤的,應該返回 false。

從上面的題目可以看出,括號總共分為三類:小括號、中括號和大括號,那么我們可以利用棧先進后出的特性,將所有左邊的括號(“(”、“[”、“{”)先入棧,然后再碰到右括號時,讓它與棧頂的元素進行匹配,比如當遇到“)”時,如果棧頂是“(”,則說明匹配成功,棧頂元素出棧再繼續字符串循環的流程,如果匹配錯誤就直接返回 false。

假設我們要匹配字符串“(([]))”是否合法?那么執行流程就是這樣的。

首先遇到左邊括號,先入棧:

 

接下來又是左邊括號,繼續入棧:

 

然后又是左邊括號,繼續入棧:

 

接下來是右邊括號,與棧頂元素匹配,“[]”為一對合法的括號,匹配成功棧頂元素出棧:

 

接下來又是右邊括號,與棧頂元素匹配,“()”為一對合法的括號,匹配成功棧頂元素出棧:

 

接下來又是右邊括號,與棧頂元素匹配,“()”為一對合法的括號,匹配成功棧頂元素出棧:

 

當字符串循環結束并且棧為空棧時,則證明此字符串的括號匹配合法,最終的效果如下圖所示:

 

那么接下來我們就用代碼來實現一下整個過程...

實現代碼一

  1. public boolean isValid(String s) { 
  2.     int slen = s.length(); // 括號的長度 
  3.     if (slen % 2 == 1) { // 括號不是成對出現直接返回 false 
  4.         return false
  5.     } 
  6.     // 把所有對比的括號存入 map,對比時用 
  7.     Map<CharacterCharacter> map = new HashMap<>(); 
  8.     map.put(')''('); 
  9.     map.put('}''{'); 
  10.     map.put(']''['); 
  11.     // 定義棧,用于存取括號(輔助比較) 
  12.     Stack<Character> stack = new Stack<>(); 
  13.     for (int i = 0; i < slen; i++) { // 循環所有字符 
  14.         char c = s.charAt(i); 
  15.         if (map.containsKey(c)) { // 為右邊的括號,如 ')''}' 等 
  16.             if (stack.isEmpty() || stack.peek() != map.get(c)) { // 棧為空或括號不匹配 
  17.                 return false
  18.             } 
  19.             stack.pop(); // 是一對括號,執行出棧(消除左右括號) 
  20.         } else { // 左邊括號,直接入棧 
  21.             stack.push(c); 
  22.         } 
  23.     } 
  24.     return stack.isEmpty(); 

我們在 LeetCode 中提交一下代碼,執行結果如下:

 

代碼解析

以上代碼的 map 集合是用于定義括號的匹配規則,比如“)”對應的匹配值是“(”,“]”的匹配值是“[”等,然后我們再去循環待驗證的字符串,遇到左括號直接入棧,遇到右括號讓它與棧頂元素匹配,等到整個字符串循環結束,如果棧為空則說明字符串的括號合法。

復雜度分析

時間復雜度:O(n),遍歷了一遍整個字符串。空間復雜度:O(n)。

實現代碼二

除了使用棧之外,我們還可以使用借助 Java 中的 replace 方法來實現,我們可以循環的消除字符串中的括號,比如將“()”或“[]”或“{}”循環得替換為空,最后在執行完成之后如果字符串為空,則說明字符串中的括號是合法的,具體實現代碼如下:

  1. public boolean isValid(String s) { 
  2.         int len; 
  3.         do { 
  4.             len = s.length(); 
  5.             // 消除成雙成對的符號 
  6.             s = s.replace("()""").replace("[]"""). 
  7.                     replace("{}"""); 
  8.         } while (len != s.length()); // 不能再進行替換了,replace 方法沒有替換任何字符 
  9.         return s.length() == 0; 
  10.     } 

我們在 LeetCode 中提交一下代碼,執行結果如下:

 

從運行結果來看,二者的執行效率相差還是很明顯的:

 

總結

本文我們講了一道 bilibili 的筆試真題,同時它也是棧的經典面試題,我們可以借助棧的特性(先進后出)將所有的左括號入棧,當遇到右括號時讓它與棧頂元素進行匹配,當字符串循環結束棧為空時,則說明此字符串的括號是合法的。當然我們在實際面試中,也可以使用 Java 的 replace 方法作為一個保底的實現方案,因為replace 方法的實現相對更簡單一些,只是性能不怎么好。

 

責任編輯:武曉燕 來源: Java中文社群
相關推薦

2021-08-30 14:34:10

有效算法字符

2014-05-13 09:53:24

算法π值

2022-01-19 09:01:28

字符串LeetCode

2021-05-31 08:01:11

Raft共識算法

2021-03-02 08:21:58

LeetCode括號

2015-03-03 09:13:22

2011-03-16 16:38:43

2013-12-06 10:20:21

2011-05-06 16:50:54

墨孔

2021-04-19 08:16:53

算法Raft 共識

2011-05-25 10:46:39

Javascript

2020-08-31 06:41:52

RSA算法

2021-05-10 11:53:13

頁面替換算法

2023-08-30 07:34:41

2020-10-13 08:53:04

算法最小值

2011-08-09 16:58:33

windows7Windows7是否被

2020-10-22 08:06:05

JavaScrip語言類型

2011-12-01 11:06:30

軟件定義網絡

2016-05-24 10:30:56

網站設計出色

2020-09-07 12:47:29

代碼臨界區方法
點贊
收藏

51CTO技術棧公眾號

久久午夜福利电影| 国产精品无码一区二区在线| 亚洲怡红院av| 午夜久久99| 亚洲成人精品久久久| 国产婷婷一区二区三区| 国产二区在线播放| 国产一区二区不卡老阿姨| 国模视频一区二区三区| 丁香激情五月少妇| 亚洲国产欧美在线观看| 亚洲国产综合人成综合网站| 欧美一区二区影视| 超碰福利在线观看| 日本欧美一区二区| 久久久免费在线观看| 免费人成又黄又爽又色| 天堂va在线高清一区| 色屁屁一区二区| 日韩精品一区二区免费| 岛国视频免费在线观看| 成人午夜视频网站| 91精品国产综合久久香蕉最新版 | 亚洲精品成a人| 免费中文日韩| 老牛影视av牛牛影视av| 久久99国产精品尤物| 欧美亚洲另类视频| 久久精品国产亚洲av无码娇色| 精品国产一区二区三区噜噜噜| 日韩欧美国产综合一区| 一区二区免费av| 午夜欧美巨大性欧美巨大 | 米仓穗香在线观看| av影片免费在线观看| 99re在线精品| aaa级精品久久久国产片| 在线免费一级片| 久久一区精品| 欧亚精品中文字幕| 日本熟妇毛茸茸丰满| 亚洲理论电影网| 色黄久久久久久| 受虐m奴xxx在线观看| 欧洲亚洲视频| 亚洲精品wwwww| 无码av免费精品一区二区三区| 精品视频一区二区三区| 欧美高清精品3d| 黄色永久免费网站| 日韩精品免费观看视频| 色屁屁一区二区| 免费午夜视频在线观看| 电影一区二区三区| 欧美视频在线观看免费网址| 黄色网页免费在线观看| segui88久久综合9999| 亚洲午夜在线观看视频在线| 992tv快乐视频| 午夜在线激情影院| 一区二区三区四区激情| 正在播放久久| 91小视频xxxx网站在线| 亚洲综合色噜噜狠狠| 男女啪啪的视频| 青草影视电视剧免费播放在线观看| 亚洲欧美激情一区二区| 三级在线免费观看| 都市激情久久综合| 精品久久久一区二区| 日韩在线综合网| 女生影院久久| 欧美日韩国产影片| 日韩av成人网| 欧美人成在线观看ccc36| 亚洲日韩欧美视频| 亚洲黄色网址大全| 在线观看日韩| 性亚洲最疯狂xxxx高清| 久久精品久久久久久久| 蜜臀av性久久久久蜜臀aⅴ流畅| 成人在线中文字幕| 国产18精品乱码免费看| 久久中文字幕电影| 亚洲精品久久区二区三区蜜桃臀 | 国产欧美日产一区| 手机成人av在线| 成人性生交大片免费看网站| 欧美午夜精品久久久久久久| 四季av一区二区| 久久99成人| 日韩电影在线观看中文字幕 | 欧洲福利电影| 久久6精品影院| 日韩人妻精品中文字幕| 精品一区精品二区高清| 国产欧美日韩亚洲| 91网页在线观看| 亚洲图片欧美色图| 婷婷免费在线观看| 国产精品极品在线观看| 在线观看精品国产视频| 久久久久久久中文字幕| 日本v片在线高清不卡在线观看| 91丨九色丨国产| 国产精品影院在线| 亚洲大片在线观看| 两性午夜免费视频| 中文字幕中文字幕精品| 久久亚洲一区二区三区四区五区高| 国产女同在线观看| 国产一区不卡在线| 日韩欧美一区二区视频在线播放| 国精一区二区三区| 在线成人小视频| 性高潮久久久久久久| 禁久久精品乱码| 91久久久久久久久久久| 国产一区电影| 欧美日韩国产中文字幕| 少妇精品无码一区二区| 五月精品视频| 国产一区视频在线| 国产永久av在线| 色综合色综合色综合色综合色综合| 国产高潮失禁喷水爽到抽搐| 亚洲91久久| 国产剧情久久久久久| 欧美18xxxxx| 精品福利在线视频| 东京热av一区| 欧美日韩国产一区精品一区| 成人激情在线播放| 拍真实国产伦偷精品| 在线中文字幕一区| 欧美成人午夜精品免费| 国产精品丝袜xxxxxxx| 懂色av一区二区三区在线播放| 毛片av在线| 一本色道久久加勒比精品| 在线免费播放av| 亚洲经典三级| 久久国产精品久久| 在线男人天堂| 亚洲人成网站免费播放| 亚洲GV成人无码久久精品| www.欧美色图| 欧美二区在线视频| 香蕉国产成人午夜av影院| 97超级碰碰碰| 视频三区在线观看| 色网综合在线观看| 波多野结衣片子| 日本特黄久久久高潮| 三区精品视频观看| 岛国精品在线| 久久久999成人| www.久久精品.com| 亚洲成av人片在线| 亚洲黄色在线网站| 日韩**一区毛片| 精品国产无码在线| 一区视频网站| 4438全国亚洲精品在线观看视频| 欧美婷婷久久五月精品三区| 色哟哟欧美精品| 永久免费观看片现看| 国产中文字幕一区| 亚洲 自拍 另类小说综合图区 | 欧美性大战久久久久| 成人国产一区| 欧美老女人性视频| 日产精品久久久久久久性色| 在线精品视频小说1| 午夜三级在线观看| 成人晚上爱看视频| 国产精品无码av无码| 国产高清一区| 国产精品一区免费观看| 3d欧美精品动漫xxxx无尽| 最近更新的2019中文字幕| jizz中国少妇| 欧美日韩午夜激情| 任我爽在线视频| 成人动漫一区二区三区| www.xxx亚洲| 午夜久久黄色| 欧美精品一区在线| 高清一区二区三区av| 韩国欧美亚洲国产| 超碰免费97在线观看| 精品国产精品网麻豆系列| www.色国产| 一区二区三区自拍| av电影在线不卡| 国产成人综合视频| 少妇一级淫免费放| 亚洲日产国产精品| 国产成年人在线观看| 女人抽搐喷水高潮国产精品| 国产一区二区丝袜| 欧美电影免费观看高清完整| 欧美日韩福利电影| 在线视频三区| 亚洲免费电影一区| 韩国中文字幕hd久久精品| 欧美性大战xxxxx久久久| 日韩成人在线免费视频| 中文字幕一区二区三区不卡在线 | 欧美日韩爱爱| 国产精品久久波多野结衣| 六九午夜精品视频| 欧美在线视频一区| 黄色影院在线看| 久久视频这里只有精品| 国产高清免费在线播放| 日韩av影视在线| 亚洲大尺度视频| 这里只有精品免费| 中文字幕自拍偷拍| 一本到不卡免费一区二区| 伊人国产在线观看| 亚洲男人电影天堂| 欧美爱爱免费视频| 国产精品美女久久久久久久久久久| 国产激情视频网站| 国产sm精品调教视频网站| www.51色.com| 日本免费新一区视频| 无遮挡又爽又刺激的视频| 91久久中文| 你真棒插曲来救救我在线观看| 欧美极品一区二区三区| www.-级毛片线天内射视视| 人人狠狠综合久久亚洲婷| 欧美一卡2卡3卡4卡无卡免费观看水多多| 精品精品国产毛片在线看| av一区观看| 凹凸成人在线| 成人av免费电影| 一区二区在线视频观看| 国产精品免费在线| 大伊香蕉精品在线品播放| 国产精品久久久久久久天堂第1集| 美女精品视频在线| 99在线视频播放| 一区二区在线视频观看| 国产亚洲情侣一区二区无| 国产精品自在| 久久久水蜜桃| 精品国产精品| 亚洲欧美久久234| 天天做天天爱天天综合网2021| 一区二区三区四区五区视频 | 色婷婷综合久久久久| 3d成人动漫在线| 久久精品国产清自在天天线| 精品自拍一区| 欧美激情一区二区三区在线视频观看| 日本在线视频www鲁啊鲁| 久久久免费电影| 欧美极品影院| 成人黄色av免费在线观看| 999精品嫩草久久久久久99| av一区二区在线看| 天美av一区二区三区久久| 视频一区视频二区视频三区高| 日韩理论电影| 国产精品自拍合集| 国产精品外国| 在线观看免费视频高清游戏推荐| 美女一区二区三区| 天天躁日日躁狠狠躁av麻豆男男 | 久热re这里精品视频在线6| 亚洲最大综合网| 国产二区国产一区在线观看| 老司机免费视频| 国产女主播视频一区二区| 免费看特级毛片| 午夜久久久久久久久久一区二区| 亚洲成熟少妇视频在线观看| 91精品欧美福利在线观看| 色一情一乱一区二区三区| 中文字幕精品网| 毛片网站在线看| 国产成人亚洲综合91精品| 激情视频亚洲| 日韩av电影免费在线| 真实国产乱子伦精品一区二区三区| 91精品国产91久久久久麻豆 主演| 三级在线观看一区二区| 日本中文字幕有码| 中文欧美字幕免费| 国产一级片免费看| 精品婷婷伊人一区三区三| 亚洲国产成人一区二区| 一区二区三区www| 久久香蕉一区| 国产啪精品视频网站| 欧美大奶一区二区| 美女在线免费视频| 日韩在线一二三区| 丰满岳乱妇一区二区| 国产精品久久久久久久久果冻传媒| 久久精品女人毛片国产| 欧美军同video69gay| 蜜桃成人在线视频| 高清欧美性猛交| 亚洲日韩中文字幕一区| 欧美日韩精品综合| 亚洲区一区二| 人妻精油按摩bd高清中文字幕| 国产无人区一区二区三区| 日韩精品一区二区不卡| 日韩一区二区三区免费观看 | 欧美第一页在线| 成人交换视频| 免费不卡亚洲欧美| 亚洲精品欧美| 亚洲色偷偷色噜噜狠狠99网| 亚洲日本在线a| 伊人久久成人网| 亚洲久久久久久久久久久| xxx在线免费观看| 91手机在线视频| 一级毛片免费高清中文字幕久久网| 免费看a级黄色片| 久久久久成人黄色影片| 国产一级18片视频| 亚洲国产日韩一区| 久草在线视频资源| www.久久爱.cn| 欧美日本亚洲韩国国产| 性久久久久久久久久久久久久| 国产精品天干天干在观线| 天堂网一区二区| 亚洲欧洲成视频免费观看| 午夜不卡影院| 另类欧美小说| 久久精选视频| 午夜精产品一区二区在线观看的| 亚洲第一狼人社区| 天堂网在线资源| 欧美一级片在线播放| 九九免费精品视频在线观看| 国产一区二区三区精彩视频| 91视视频在线观看入口直接观看www| 日本少妇性高潮| 亚洲欧美三级在线| av免费在线一区| 亚洲一区二区精品在线| 久久aⅴ国产欧美74aaa| 午夜国产小视频| 日韩午夜精品视频| 黑人极品ⅴideos精品欧美棵| 国产亚洲精品自在久久| 美日韩精品视频| 欧美福利在线视频| 91精品在线观看入口| 美女网站视频在线| 麻豆成人在线播放| 奇米精品一区二区三区四区| 欧美性生给视频| 欧美电影精品一区二区| 欧美巨大丰满猛性社交| 日本高清视频一区二区三区| 久久99久久精品欧美| 99热精品免费| 日韩av中文字幕在线免费观看| 另类激情视频| 国产系列第一页| 成人免费看的视频| 久久久久久无码精品大片| 久久精品国产亚洲| 精品精品精品| 91看片在线免费观看| 亚洲精品福利视频网站| 日韩porn| 91免费人成网站在线观看18| 伊人久久成人| 国产精品成人无码免费| 欧美一区二区视频观看视频| 爱啪视频在线观看视频免费| 日韩三级在线播放| 国产激情视频一区二区在线观看| 九九热在线免费观看| x99av成人免费| 日韩a级大片| 中文字幕在线视频精品| 欧美日韩一二三四五区| 欧美成人性生活视频| 久久久com| 国产一区二区91| 中国老头性行为xxxx| 欧美激情亚洲激情| 91亚洲成人| 黑人巨大精品欧美| 欧美va亚洲va香蕉在线| 激情久久99| 免费观看精品视频|