函数题:找出不匹配的括号
小王同学做事马虎,特别是做数学作业时,经常会漏掉小括号或左右小括号不匹配。设计一个算法,判断输入的数学公式中小括号是否匹配正确,如果括号匹配错误就给出提示。
例如:输入数学公式 '(1+2) / (4-1 = 1',检查后发现位置 7 的左括号不匹配,输出'位置7的括号不匹配'。注意:位置从1开始计算,并且数学公式里的空格不计算位置。
### 函数接口定义:
c++
def check(formula)
其中 formula 是传入的参数。 用字符串表示一个数学公式。函数返回当前公式 formula 中的小括号是否匹配,如果匹配返回括号匹配,否则,返回不匹配括号的位置(序号从1开始),即位置7的括号不匹配。
### 裁判测试程序样例:
c++
/* 请在这里填写答案 */
formula = input()
print(check(formula))
### 输入样例1:
in
(1+2) / (4-1) = 1
### 输出样例1:
out
括号匹配
### 输入样例2:
in
(1+2) / (4-1 = 1
### 输出样例2:
out
位置7的括号不匹配
答案:若无答案欢迎评论
def check(formula):
stack = []
formula = formula.replace(' ', '')
for index, char in enumerate(formula, 1):
if char == '(':
stack.append(index)
elif char == ')':
if len(stack) > 0:
stack.pop()
else:
return f'位置{index}的括号不匹配'
if len(stack) > 0:
return f'位置{stack.pop()}的括号不匹配'
return '括号匹配'
例如:输入数学公式 '(1+2) / (4-1 = 1',检查后发现位置 7 的左括号不匹配,输出'位置7的括号不匹配'。注意:位置从1开始计算,并且数学公式里的空格不计算位置。
### 函数接口定义:
c++
def check(formula)
其中 formula 是传入的参数。 用字符串表示一个数学公式。函数返回当前公式 formula 中的小括号是否匹配,如果匹配返回括号匹配,否则,返回不匹配括号的位置(序号从1开始),即位置7的括号不匹配。
### 裁判测试程序样例:
c++
/* 请在这里填写答案 */
formula = input()
print(check(formula))
### 输入样例1:
in
(1+2) / (4-1) = 1
### 输出样例1:
out
括号匹配
### 输入样例2:
in
(1+2) / (4-1 = 1
### 输出样例2:
out
位置7的括号不匹配
答案:若无答案欢迎评论
def check(formula):
stack = []
formula = formula.replace(' ', '')
for index, char in enumerate(formula, 1):
if char == '(':
stack.append(index)
elif char == ')':
if len(stack) > 0:
stack.pop()
else:
return f'位置{index}的括号不匹配'
if len(stack) > 0:
return f'位置{stack.pop()}的括号不匹配'
return '括号匹配'