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()
Beispiel #2
0
def reverse(s):
    S = Stack()
    for ch in s:
        S.push(ch)
    while not S.is_empty():
        ch = S.pop()
        print(ch, end="")
    print()
Beispiel #3
0
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)
Beispiel #4
0
 def setUp(self):
     self.stack = Stack()
Beispiel #5
0
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)
Beispiel #6
0
 def setUp(self):
     self.stack = Stack()
     self.stack.push(1)
     self.stack.push(2)
     self.stack.push(3)
Beispiel #7
0
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)