題目描述:
給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: 「()」
輸出: true
示例 2:
輸入: 「(){}」
輸出: true
示例 3:
輸入: 「(]」
輸出: false
示例 4:
輸入: 「([)]」
輸出: false
示例 5:
輸入: 「」
輸出: true
解題思路:
這道題的主要知識點是考棧操作。
首先大家可以先把第乙個符號為 』 ) 『,』 ] 『,』 } ',的這種情況直接返回false,而輸入的字元如果為奇數的話這種情況也可以返回false。
剩下的情況就是字元長度為偶數,並且第一位不是上述講的那三種符號的情況了,以下是**塊,這邊的話我建議大家把這兩種都自己寫一下:
(1)直接呼叫棧操作:
#include#include#includeusing namespace std;
class solution
'||s[0]==']'||length%2==1)
for(int i=0;i(2)自己寫棧的各種操作:
#include#include#define maxsize 100
using namespace std;
typedef struct
stack;
void initstack(stack &s)
void pushstack(stack &s,string sg)
int isemptystack(stack s)
'||len%2==1)
for(int i=0;iif(st[i]==')'||st[i]=='}'||st[i]==']')
')continue;
else}}
if(isemptystack(str)==1)
}
C 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意 空字串可被認為是有效字串。由於要對照字串對稱位置上的括號是否對應,決定採用棧來解決這一問題,若字串長度不為偶數則直接返回false,遍歷字串,讀到前括號時入棧,讀到後括號時若...
20 有效的括號 C
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...
20 有效的括號(C )
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...