整数可以用作简单的栈来使用,整数0,入栈加1,出栈减1。这种方式只能用作使用栈进行简单判断的地方,不适用于使用栈来存放数据。
比如判断括号是否匹配正确,(()()),这样的就是正确的,())( )),这样的就是不正确的,且只能判断一种括号的。
因为只是为了判断括号是否正确,所以用栈来做,但同时由于没有数据需要存放,使用真正的栈就会浪费空间。所以使用整数来充当一个栈。这个栈只要入栈、出栈和栈内元素的个数的功能,不具备取得栈内元素的功能。
class myUtil:
"""
The class has ony a method, which is used to decide whether
a string has correct brackets or not.
类有一个方法,用于判断字符串中括号匹配是否正确。
"""
def bracket(self, s):
"""
:type s: str
:rtype: bool
"""
stack = 0
for i in range(len(s)):
if s[i] == '(' :
stack += 1
elif s[i] == ')':
stack -= 1
if stack < 0:
return False
if stack != 0:
return False
else:
return True # 最后只有正确的stack才是0,格式错误的都不为0
"""
The method is used for test
测试方法
"""
def test(self):
print(self.bracket('()()')) # True
print(self.bracket(')()(')) # False
print(self.bracket('(((')) # False
print(self.bracket(')))')) # False
print(self.bracket('())(')) # False
print(self.bracket('')) # True
print(self.bracket('()()())()')) # False
类似的还有使用两个整数当做简单队列使用,第一个整数用于指示队头,第二个整数用于指示队尾。