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
- [Go 演算法]20:有效括號(棧)Go演算法
- Leetcode 20 有效的括號valid-parentheses(棧)LeetCode
- 20. 有效的括號
- 【棧】括號匹配
- 最長有效括號
- [leetcode]有效的括號LeetCode
- 每日一題: 有效括號每日一題
- Leetcode20. 有效的括號LeetCode
- Leetcode——20. 有效的括號LeetCode
- LeetCode有效的括號(Python)LeetCodePython
- LeetCode 20. 有效的括號LeetCode
- 【LeetCode】 20.有效的括號LeetCode
- POJ 1068-Parencodings(模擬-包含括號個數)Encoding
- UVA 673 括號的匹配——經典棧的應用
- 演算法題:判斷括號字串是否有效演算法字串
- 用Java的方式模擬Flutter的Widget的實現(多層括號巢狀)JavaFlutter巢狀
- java:模擬棧操作Java
- 理解正規表示式中的括號 (),方括號 [] 和大括號 {}
- Python有效括號字串判斷和深度計算Python字串
- [LeetCode] Longest Valid Parentheses 最長有效括號LeetCode
- 讓我們一起啃演算法----有效的括號演算法
- 【資料結構】棧的應用--括號的匹配(c++)資料結構C++
- (C語言)簡單明瞭的 陣列模擬棧+ (C++)陣列模擬棧C語言陣列C++
- LeetCode 之 JavaScript 解答第20題 —— 有效的括號(Valid Parentheses)LeetCodeJavaScript
- c++物件建立帶括號與無括號的區別C++物件
- JavaScript中圓括號()和方括號[]的一個特殊用法JavaScript
- 使用Python實現一個棧, 判斷括號是否平衡Python
- Matlab中的括號()[]{}Matlab
- 括號畫家
- JSON 字串中的中括號和大括號區別詳解JSON字串
- JavaScript 函式呼叫時帶括號和不帶括號的區別JavaScript函式
- Python模擬微博登陸,親測有效Python
- [PHP字串]②--花括號{}的作用PHP字串
- Shell 括號總結
- Swift之花括號Swift
- 【題解】括號序列
- PHP使用棧完成高階計算器-接上文模擬棧PHP