括号匹配
#导入定义的栈
from Algorithm import Stack_1
#定义括号匹配函数
#参数传入所要匹配的括号字符串
def parChecker(symbolString):
#定义一个栈,用来存储左括号,弹出并与右括号比较
s = Stack_1.Stack()
#设置是否匹配成功标志
balanced = True
#索引,匹配成功一个就匹配后一个字符
index = 0
while index<len(symbolString) and balanced :
#接收当前字符
symbol = symbolString[index]
#如果当前括号为左括号中的一个则入栈
if symbol in "([{":
s.push(symbol)
#如果不是左括号中的一个
else:
#判断栈是否为空
if s.isEmpty():
#为空 ,则说明当前右括号不能与左括号匹配,匹配失败
balanced = False
#栈中还有左括号
else:
#弹出栈顶左括号
top = s.pop()
#进行匹配
if not matches(top,symbol):
balanced = False
#上一个右括号匹配成功,则退出以上判断,进入下一个括号的匹配
index = index+1
#循环结束,字符串左右括号已经匹配完
#匹配成功且栈为空,则返回成功
if balanced and s.isEmpty():
return True
#匹配失败
else:
return False
#定义左右括号是否是一对的函数
def matches(left,right):
#定义左右括号字符串集
lefts = "([{"
rights = ")]}"
#字符串的index()方法,根据值返回其在字符串中的索引位置
return lefts.index(left) == rights.index(right)
str = "([{)}]"
res = parChecker(str)
print(res)
十进制转换为二进制(可以改成十进制转换为任意进制,将2改为base即可)
#利用栈实现除留余数法完成十进制转换为二进制
from Algorithm import Stack_1
#参数为十进制整数
def divideBy2(num):
#初始化栈
s = Stack_1.Stack()
rem = num
while rem >0 :
# 余数
mod = rem % 2
s.push(mod)
#商
rem = rem // 2
res =""
while not s.isEmpty():
res = res+str(s.pop())
return res
print(divideBy2(233))