LeetCode-20. 有效的括號(棧模擬)
20. 有效的括號
給定一個只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字串,判斷字串是否有效。
有效字串需滿足:
- 左括號必須用相同型別的右括號閉合。
- 左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: "()" 輸出: true
示例 2:
輸入: "()[]{}" 輸出: true
示例 3:
輸入: "(]" 輸出: false
示例 4:
輸入: "([)]" 輸出: false
示例 5:
輸入: "{[]}" 輸出: true
#include<bits/stdc++.h>
using namespace std;
/********************提交程式碼********************/
bool isValid(char* s)
{
char sta[10000];//注意開大一點
int i,cnt=0,len=strlen(s);
if(len%2) return false;//奇數
for(i=0;i<len;++i)
{
if(s[i]=='('||s[i]=='['||s[i]=='{')//左括號
sta[cnt++]=s[i];//入棧
else if(s[i]==')'||s[i]==']'||s[i]=='}')//右括號
{
if(cnt==0) return false;//防止下標越界
if((sta[cnt-1]=='('&&s[i]==')')||(sta[cnt-1]=='['&&s[i]==']')||(sta[cnt-1]=='{'&&s[i]=='}'))
--cnt;//匹配出棧
else return false;//不匹配
}
}
if(cnt==0) return true;
return false;
}
/***************************************************/
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("F:/cb/read.txt","r",stdin);
//freopen("F:/cb/out.txt","w",stdout);
#endif
ios::sync_with_stdio(false);
cin.tie(0);
char s[2000];
while(cin>>s)
{
cout<<isValid(s)<<endl;
}
return 0;
}
遍歷字串,遇到左括號入棧,遇到右括號和棧頂元素比較是否成對匹配:
若匹配則出棧;反之則整個字串不滿足匹配。
只有遍歷到最後棧為空則整個字串滿足匹配。
測試用例:
((
[
(}
({
()
()[]{}
(]
([)]
{[]}
相關文章
- 【LeetCode-棧】有效的括號LeetCode
- Leetcode 20 有效的括號valid-parentheses(棧)LeetCode
- [Go 演算法]20:有效括號(棧)Go演算法
- 有效的括號
- [leetcode]有效的括號LeetCode
- LeetCode有效的括號(Python)LeetCodePython
- 20. 有效的括號
- 【棧】括號匹配
- 最長有效括號
- Leetcode——20. 有效的括號LeetCode
- Leetcode20. 有效的括號LeetCode
- 【LeetCode】 20.有效的括號LeetCode
- LeetCode 20. 有效的括號LeetCode
- 每日一題: 有效括號每日一題
- 最長有效括號的問題
- 每日一練(36):有效的括號
- 棧和括號匹配,一文搞懂
- 用Java的方式模擬Flutter的Widget的實現(多層括號巢狀)JavaFlutter巢狀
- LeetCode 之 JavaScript 解答第20題 —— 有效的括號(Valid Parentheses)LeetCodeJavaScript
- 演算法題:判斷括號字串是否有效演算法字串
- Python有效括號字串判斷和深度計算Python字串
- 理解正規表示式中的括號 (),方括號 [] 和大括號 {}
- 讓我們一起啃演算法----有效的括號演算法
- java:模擬棧操作Java
- 使用Python實現一個棧, 判斷括號是否平衡Python
- 【PAT A1051】【棧/模擬】
- {} 花括號的用法
- c++物件建立帶括號與無括號的區別C++物件
- 【leetcode】32. Longest Valid Parentheses 最長的有效匹配括號子串長度LeetCode
- 括號畫家
- 【題解】括號序列
- Shell 括號總結
- latex 中乘號、恆等號、花括號的寫法
- 萬用字元 and [] 中括號的用法字元
- Python模擬微博登陸,親測有效Python
- 棧的模擬實現及常見演算法演算法
- PHP使用棧完成高階計算器-接上文模擬棧PHP
- 雙括號初始化