天天演算法 | Easy | 10. 有效括弧:Valid Parentheses

每天來一道,面試不卡殼,今天是天天演算法陪你成長的第10天


本題可在LeetCode上OJ,鏈接: Valid Parentheses

題目描述:

Given a string containing just the characters (, ), {, }, [ and ], determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]"are not.

題目翻譯

給出一個字元串僅包含如下字元(,),{,},[和],判斷輸入的字元串是否有效。

所有括弧以正確的順序閉合該字元串即為有效,比如"()""()[]{}"都是有效的字元串,但是"(]""([)]"都是無效的字元串。

解題方案

標籤: String

思路:

使用棧結構來存儲,遍歷字元串,當出現 ( , { , [ 這三個字元的時候,將字元壓入棧中否則則代表出現的是 ) , } , ] 這三個字元當 ) , } , ] 這些字元時先判斷棧內是否為空,如果為空,說明沒有與之匹配的字元存在,則返回false。如果不為空,則判斷是否棧頂元素與當前出現的字元匹配,即是否滿足 () {} [] 兩兩匹配,如果不匹配則返回false。遍歷結束後如果棧內還有元素,說明匹配不完全,則返回false,如果為空則匹配完全,返回true。

代碼:

class Solution {n public boolean isValid(String s) {n Stack<Character> st = new Stack<Character>();n for(int i=0;i<s.length();i++){n if(s.charAt(i) == ( || s.charAt(i) == { || s.charAt(i) == [)n st.push(s.charAt(i));n else if(st.isEmpty() ||n s.charAt(i) == ) && st.pop() != ( || n s.charAt(i) == } && st.pop() != { || n s.charAt(i) == ] && st.pop() != [)n return false;n }n return st.size() == 0;n }n}n

參考資料 blog.csdn.net...


歡迎加入碼蜂社演算法交流群:天天一道演算法題

掃描下方二維碼或搜素「碼蜂社」公眾號,不怕錯過好文章:

推薦閱讀:

我的第一個響應式頁面
淺談Node模塊載入機制/CommonJS規範
代碼質量檢測平台架構設計

TAG:前端开发 | 算法 | 计算机科学 |