java題解LeetCode20.有效的括號
題目
給定一個只包括 '(',')','{','}','[',']' 的字符串 s ,判斷字符串是否有效。
有效字符串需滿足:
左括號必須用相同類型的右括號閉合。
左括號必須以正確的順序閉合。
每個右括號都有一個對應的相同類型的左括號。
示例 1:
輸入:s = "()"
輸出:true
示例 2:輸入:s = "()[]{}"
輸出:true
示例 3:輸入:s = "(]"
輸出:false
代碼如下
public boolean isValid(String s) { if(s.length()==0){ return true; } Stack<Character> stack=new Stack<>(); for (int i = 0; i < s.length(); ) { stack.push(s.charAt(i)); i++; while((!stack.isEmpty())&&(i<s.length())&&((s.charAt(i)==')'&&stack.peek()=='(')||(s.charAt(i)=='}'&&stack.peek()=='{')||(s.charAt(i)==']'&&stack.peek()=='['))){ stack.pop(); i++; } } return stack.isEmpty(); }
題解采用了一種逆向思維:即遍歷到左半部分括號時,向棧中壓入對應的右半部分,那么就可通過是否相等來判斷(雖然本質(zhì)是一樣的hhh)
public boolean isValid(String s) { if(s.length()==0){ return true; } Stack<Character> stack=new Stack<>(); for (int i = 0; i < s.length(); i++) { if(s.charAt(i)=='('){ stack.push(')'); }else if(s.charAt(i)=='['){ stack.push(']'); }else if(s.charAt(i)=='{'){ stack.push('}'); }else if(stack.isEmpty()||stack.peek()!=s.charAt(i)){ return false;//這里考慮后面會有尾巴的情況 }else{ stack.pop(); } } return stack.isEmpty(); }
以上就是java題解LeetCode20.有效的括號的詳細內(nèi)容,更多關于java題解有效的括號的資料請關注腳本之家其它相關文章!
相關文章
Springboot?前后端分離項目使用?POI?生成并導出?Excel的操作方法
在做一個?SpringBoot?前后端分離項目的時候,需要將數(shù)據(jù)存到?Excel中,用戶可以下載?Excel,具體實現(xiàn)是采用?Apache?強大的?POI,本文給大家介紹Springboot?前后端分離項目使用?POI?生成并導出?Excel相關知識,感興趣的朋友一起看看吧2023-09-09java input 調(diào)用手機相機和本地照片上傳圖片到服務器然后壓縮的方法
今天小編就為大家分享一篇java input 實現(xiàn)調(diào)用手機相機和本地照片上傳圖片到服務器然后壓縮的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08idea快速搭建spring cloud注冊中心與注冊的方法
這篇文章主要介紹了idea快速搭建spring cloud注冊中心與注冊的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07Elasticsearch Join字段類型簡單快速上手教程
這篇文章主要為大家介紹了Elasticsearch Join字段類型簡單快速上手教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09Springboot+TCP監(jiān)聽服務器搭建過程圖解
這篇文章主要介紹了Springboot+TCP監(jiān)聽服務器搭建過程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10配置pom.xml用maven打包java工程的方法(推薦)
下面小編就為大家?guī)硪黄渲胮om.xml用maven打包java工程的方法(推薦)。小編覺得挺不錯的, 現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06