有效的括號
class Solution {
public:
bool isValid(string s) {
unordered_map<char,int> m{{'(',1},{'[',2},{'{',3},{')',4},{']',5},{'}',6}};
stack <char> st;
bool isTrue =true;
for(char c:s)
{
if(1<=m[c]&&m[c]<=3)st.push(c);
else if(!st.empty() && m[st.top()]==m[c]-3 )st.pop();
else
{
isTrue=false;
break;
}
}
if(!st.empty()) isTrue=false;
return isTrue;
}
};
class Solution:
def isValid(self, s: str) -> bool:
if len(s)%2==1: #數量不為二的倍數直接判負
return False
dic ={ '(':')', '[':']', '{':'}'} # 创建字典,表示左右括号的对应关系
stack = []
for c in s: #開始遍歷
if c in dic:
stack.append(c) #在後面追加一個元素
else:
if len(stack)==0: #判断栈为空?
return False
else:
top = stack.pop() #栈顶元素,有多個不唯一
if c != dic[top]: #进来的括号不等于栈顶左括号对应
return False
return not stack