java題解LeetCode20.有效的括號
題目
給定一個只包括 '(',')','{','}','[',']' 的字符串 s ,判斷字符串是否有效。
有效字符串需滿足:
左括號必須用相同類型的右括號閉合。
左括號必須以正確的順序閉合。
每個右括號都有一個對應(yīng)的相同類型的左括號。
示例 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();
}題解采用了一種逆向思維:即遍歷到左半部分括號時,向棧中壓入對應(yīng)的右半部分,那么就可通過是否相等來判斷(雖然本質(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)容,更多關(guān)于java題解有效的括號的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java實現(xiàn)線程按序交替執(zhí)行的方法詳解
這篇文章主要為大家詳細介紹了Java如何實現(xiàn)線程按序交替執(zhí)行,文中的示例代碼講解詳細,對我們了解線程有一定幫助,需要的可以參考一下2022-10-10
解決fcitx輸入法在IDEA中輸入法候選框無法跟隨光標移動的問題
這篇文章主要介紹了解決fcitx輸入法在Intellij IDEA開發(fā)工具中輸入法候選框無法跟隨光標移動的問題,代碼簡單易懂對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
Aop動態(tài)代理和cglib實現(xiàn)代碼詳解
這篇文章主要介紹了Aop動態(tài)代理和cglib實現(xiàn)代碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-12-12
JAVA實現(xiàn)Token自動續(xù)期機制的示例代碼
本文主要介紹了JAVA實現(xiàn)Token自動續(xù)期機制的示例代碼,通過動態(tài)調(diào)整會話生命周期平衡安全性與用戶體驗,解決固定有效期Token帶來的風險與不便,感興趣的可以了解一下2025-09-09
Java編程實現(xiàn)調(diào)用com操作Word方法實例代碼
這篇文章主要介紹了Java編程實現(xiàn)調(diào)用com操作Word方法實例代碼,代碼注釋很詳細,在這里分給大家,需要的朋友可以參考下。2017-09-09
關(guān)于Jedis的用法以及Jedis使用Redis事務(wù)
這篇文章主要介紹了關(guān)于Jedis的用法以及Jedis使用Redis事務(wù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
VSCode中搭建JAVA+MAVEN開發(fā)環(huán)境的完整步驟
Maven是一個Java項目管理和構(gòu)建工具,它可以定義項目結(jié)構(gòu)、項目依賴,并使用統(tǒng)一的方式進行自動化構(gòu)建,是Java項目不可缺少的工具,這篇文章主要介紹了VSCode中搭建JAVA+MAVEN開發(fā)環(huán)境的完整步驟,需要的朋友可以參考下2026-02-02

