Java括號(hào)匹配舉例詳解
一、題目描述
給定一個(gè)只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判斷字符串是否有效。
有效字符串需滿足:
- 左括號(hào)必須用相同類型的右括號(hào)閉合。
- 左括號(hào)必須以正確的順序閉合。
- 每個(gè)右括號(hào)都有一個(gè)對(duì)應(yīng)的相同類型的左括號(hào)。
示例:
輸入:s = "()"
輸出:true
輸入:s = "(]"
輸出:false
二、題解
思路分析:
我們可以使用棧來解決這個(gè)問題:
遍歷字符串,如果是左括號(hào),就將其入棧;
如果是右括號(hào),就將棧頂元素彈出,判斷是否是與其匹配的左括號(hào),
若棧中無元素可以彈出,則無能與該右括號(hào)匹配的左括號(hào),返回false,
若不是與其匹配的左括號(hào),返回false,
若是與其匹配的左括號(hào),則繼續(xù)遍歷下一個(gè)字符。
當(dāng)循環(huán)結(jié)束時(shí),判斷棧是否為空,
若棧不為空,則表明還有未匹配的左括號(hào),返回false,
若棧為空,則表示所有的左括號(hào)都與相同類型的右括號(hào)匹配,返回true
代碼實(shí)現(xiàn):
class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); for (int i = 0; i < s.length(); i++) { //判斷是否是左括號(hào) char ch = s.charAt(i); if(ch == '(' || ch == '[' || ch == '{'){ stack.push(ch); }else { //右括號(hào),出棧 //無左括號(hào)能夠匹配,返回false if(stack.empty()){ return false; } char ch2 = stack.pop(); if((ch2 == '(' && ch == ')') || (ch2 == '[' && ch == ']') || (ch2 == '{' && ch == '}')){ }else { return false; } } } return stack.empty(); } }
題目來自:
總結(jié)
到此這篇關(guān)于Java括號(hào)匹配的文章就介紹到這了,更多相關(guān)Java括號(hào)匹配內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis接口Mapper內(nèi)的方法為啥不能重載嗎
這篇文章主要介紹了Mybatis接口Mapper內(nèi)的方法為啥不能重載嗎,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Java中隊(duì)列Queue和Deque的區(qū)別與代碼實(shí)例
學(xué)過數(shù)據(jù)結(jié)構(gòu)的,一定對(duì)隊(duì)列不陌生,java也實(shí)現(xiàn)了隊(duì)列,下面這篇文章主要給大家介紹了關(guān)于Java中隊(duì)列Queue和Deque區(qū)別的相關(guān)資料,需要的朋友可以參考下2021-08-08詳解Java Callable接口實(shí)現(xiàn)多線程的方式
這篇文章主要介紹了詳解Java Callable接口實(shí)現(xiàn)多線程的方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04java警告:源發(fā)行版17 需要目標(biāo)發(fā)行版17問題及解決
文章介紹了如何解決項(xiàng)目JDK版本不一致的問題,包括修改Project Structure、Modules、Dependencies和Settings中的JDK版本,以及在pom.xml中指定JDK源版本2024-11-11Java postgresql數(shù)組字段類型處理方法詳解
這篇文章主要介紹了Java postgresql數(shù)組字段類型處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10