def balancedSymbols(s): stack = Stack() for ch in s: if ch in "({[": stack.push(ch) elif ch in ")}]": if stack.is_empty() or not matching(stack.top(), ch): return False stack.pop() # ignore all other characters return stack.is_empty()
def reverse(s): S = Stack() for ch in s: S.push(ch) while not S.is_empty(): ch = S.pop() print(ch, end="") print()
class StackPushTestCase(unittest.TestCase): def setUp(self): self.stack = Stack() def test_push_should_add_item_to_the_end_of_items_list(self): self.stack.push(1) self.assertEqual(self.stack.items.head.value, 1) self.stack.push(2) self.assertEqual(self.stack.items.head.next.value, 2) def test_push_should_increment_stack_size(self): self.stack.push(1) self.assertEqual(self.stack.size(), 1)
def setUp(self): self.stack = Stack()
class StackSizeTestCase(unittest.TestCase): def setUp(self): self.stack = Stack() def test_size_should_return_the_number_of_items_in_the_stack(self): self.assertEqual(self.stack.size(), 0) self.stack.push(1) self.assertEqual(self.stack.size(), 1) self.stack.push(2) self.assertEqual(self.stack.size(), 2) self.stack.pop() self.assertEqual(self.stack.size(), 1) self.stack.peek() self.assertEqual(self.stack.size(), 1)
def setUp(self): self.stack = Stack() self.stack.push(1) self.stack.push(2) self.stack.push(3)
class StackPeekTestCase(unittest.TestCase): def setUp(self): self.stack = Stack() self.stack.push(1) self.stack.push(2) self.stack.push(3) def test_peek_should_return_the_last_item_of_its_items_list(self): self.assertEqual(self.stack.peek(), 3) self.assertEqual(self.stack.peek(), 3) self.assertEqual(self.stack.peek(), 3) def test_peek_should_return_none_if_stack_is_already_empty(self): self.stack.pop() self.stack.pop() self.stack.pop() self.assertEqual(self.stack.peek(), None) def test_peek_should_not_decrement_stack_size(self): self.stack.peek() self.assertEqual(self.stack.size(), 3)