判断括号的有效性 --------------------------- 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。来自leetcode 20 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1:: 输入: "()" 输出: true 示例 2:: 输入: "()[]{}" 输出: true 示例 3:: 输入: "(]" 输出: false 示例 4:: 输入: "([)]" 输出: false 示例 5:: 输入: "{[]}" 输出: true 实现如下:: import unittest class Solution: def isValid(self, s): """ :type s: str :rtype: bool """ if(len(s)==0): return True left = "([{" right = ")]}" stack = [] #使用列表中的栈操作,append和pop, 对于左括号,入栈,碰见右括号出栈并比较 #print("s=", s) for i in s: if(left.find(i)>=0): stack.append(i) else: if(len(stack)<=0): return False a = stack.pop() if(right.find(i)==left.find(a)): continue else: return False return True class TestisValidFunc(unittest.TestCase): """Test case""" def testisValid(self): """Test method hammingWeight()""" s =Solution() self.assertEqual(True, s.isValid("()")) self.assertEqual(True, s.isValid("()[]{}")) self.assertEqual(False, s.isValid("(]")) self.assertEqual(False, s.isValid("([)]")) self.assertEqual(True, s.isValid("{[]}")) if __name__ == '__main__': unittest.main()