20.Valid Parentheses
class Solution: def isValid(self, s: str) -> bool: dic = {"(":")",")":"(","[":"]","]":"[","{":"}","}":"{"} if len(s) == 0: return True else: stack = "" for i,w in enumerate(s): if len(stack) >0 and stack[-1] == dic[w]: stack = stack[:-1] else: stack += w if len(stack) == 0: return True else: return False
Java 版:
• 利用栈的先进后出思想来做;
• 遇到前括号,则入栈;
• 遇到后括号,则从栈顶拿元素,判断是否是一对;
• 注意判断栈是否是空栈。
class Solution { public boolean isValid(String s) { if(s.length() == 0) return true; Stack<Character> stack = new Stack<>(); for(int i = 0; i < s.length(); i++){ char c = s.charAt(i); if(c == '(' || c == '[' || c == '{') stack.push(c); //入栈 else{ if(stack.size() == 0) return false;//判栈空,栈非空才能有元素出栈 char top = stack.pop();//出栈 if(c == ')' && top == '(') continue;//判断能否配对 else if(c == ']' && top == '[') continue; else if(c == '}' && top == '{') continue; else return false; //都不能配对成功,则返回 false } } if(stack.size() > 0) return false; return true; } }