leetcode 探索-初級算法 其他 有效的括號 C#

之前寫了兩篇 感覺太簡單的沒什么意思 就一直擱下懶得寫了 今天做題的時候碰到了個有意思的 就記錄一下吧

?有效的括號

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

有效字符串需滿足:

1.左括號必須用相同類型的右括號閉合。

2.左括號必須以正確的順序閉合。

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

示例 1:

輸入:"()"輸出:true

示例?2:

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

示例?3:

輸入:"(]"輸出:false

示例?4:

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

示例?5:

輸入:"{[]}"輸出:true

初看 感覺需要遍歷 和一大堆if判斷 然后還想到可以用ascii碼的值來判斷 后來自己寫的時候 發(fā)現(xiàn)只能滿足 (){}()[] 這種依次排列 以及({[]}) 這樣規(guī)律的嵌套 ({}([])) 這種多級的嵌套無法搞定 以下是我失敗的截圖?


失敗嘗試

其實(shí)還是蠻簡潔有意思的,但是我懶得繼續(xù)想了 感覺挺蠢的 而且本能地想到應(yīng)該是需要用到棧 因?yàn)樽钤缈?lt;<算法>>那本書的時候,提及到了對于棧的一些使用 百度了一下 果然如此 并且自己實(shí)現(xiàn)了一種 好像還不錯的方法 如下

public class Solution { public bool IsValid(string s) { if (s == null) return true; if (s.Length % 2 == 1) return false; Stacksc=new Stack();

? ? ? ? ? ? for(int i = 0; i < s.Length; i++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? switch (s[i])

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? case '(': sc.Push(s[i]); break;

? ? ? ? ? ? ? ? ? ? case '{': sc.Push(s[i]); break;

? ? ? ? ? ? ? ? ? ? case '[': sc.Push(s[i]); break;

? ? ? ? ? ? ? ? ? ? case ')':if (sc.Count == 0 || sc.Peek() != '(') return false; else sc.Pop(); break;

? ? ? ? ? ? ? ? ? ? case '}':if (sc.Count == 0 || sc.Peek() != '{') return false; else sc.Pop(); break;

? ? ? ? ? ? ? ? ? ? case ']':if (sc.Count == 0 || sc.Peek() != '[') return false; else sc.Pop(); break;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? return sc.Count == 0;

? ? ? ? }

? ? }

思路就是遇到左括號就壓進(jìn)去 遇到右括號就去和棧頂對比 其他的嘛 自己寫寫思路也就理清啦 不贅述了

然后在我提交了之后 又看到了一種NB的算法

public class Solution{ public bool IsValid(string s) { Stackstack = new Stack();

? ? ? ? foreach (char item in s.ToCharArray())

? ? ? ? {

? ? ? ? ? ? if (item == '(')

? ? ? ? ? ? ? ? stack.Push(')');

? ? ? ? ? ? else if (item == '{')

? ? ? ? ? ? ? ? stack.Push('}');

? ? ? ? ? ? else if (item == '[')

? ? ? ? ? ? ? ? stack.Push(']');

? ? ? ? ? ? else if (stack.Count == 0 || stack.Pop() != item)

? ? ? ? ? ? ? ? return false;

? ? ? ? }

? ? ? ? return stack.Count == 0;

? ? }

}

牛比在哪? emmm自己讀讀吧 雖然我感覺思路區(qū)別不是很大 但是這個用時是之前那個的一半還要少哦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 先創(chuàng)建服務(wù)端的APP 1.官網(wǎng)下載Winrun4j。http://winrun4j.sourceforge.net...
    Alex_1799閱讀 2,106評論 1 2
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,156評論 0 2
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,614評論 0 13
  • 藿香,又稱正氣草,刺蕊草,排香草,大葉薄荷,兜婁婆香,山茴香,水麻葉等,開紫色花。生于海拔170------160...
    菩提果zk張珂閱讀 1,370評論 0 1
  • 又到了數(shù)九寒天的季節(jié),外面正在飄著雪花,這是入冬以來,長春的第一場雪。 我剛走出教室的大門,一陣寒意襲來。我裹緊了...
    千原閱讀 1,869評論 1 5

友情鏈接更多精彩內(nèi)容