# 符号匹配
# 创建栈,在python中实现栈的初始化及相关函数
class Stack(object):
def __init__(self):
self.items=[]
# 判断是否为空
def _is_empty(self):
return self.items==[]
# 入栈
def push(self,item):
self.items.append(item)
# 出栈
def pop(self):
self.items.pop()
# 获取栈顶元素
def top(self):
return self.items[len(self.items)-1]
# 获取栈的大小
def size(self):
return len(self.items)
# 输入
n=list(input())
lens=len(n)
s=Stack()
# 初始化数组,ans[]用来记录结果
ans=[0 for i in range(lens+1)]
f=True
# n[i]=='('就入栈,n[i]==')'则获取栈顶元素出栈与之匹配
for i in range(lens):
if n[i]=='(':
# 为了保证下标输出一致
s.push(i+1)
else:
if s._is_empty()==False:
# 记录匹配的位置,ans[i+1]为左括号的下标,i+1为右括号的下标
ans[i+1]=s.top()
s.pop()
else:
# 栈为空
f=False
break
if s._is_empty()==False:
f=False
# 输出结果
if f==False:
print("No\n")
else:
print("Yes")
for i in range(1,lens+1):
if ans[i]:
print(ans[i],i)
python符号匹配
最新推荐文章于 2023-12-01 22:26:43 发布