Problem Description
在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注。
Input Description
输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母,字符串长度不超过100。
注意:cin.getline(str,100)最多只能输入99个字符!
Output Description
对每组输出数据,输出两行,第一行包含原始输入字符,第二行由"$","?"和空格组成,"$"和"?"表示与之对应的左括号和右括号不能匹配。
Sample Input
bge)))))))))
((IIII))))))
()()()()(uuu
))))UUUU((()
Sample Output
bge)))))))))
?????????
((IIII))))))
????
()()()()(uuu
$
))))UUUU((()
???? $$
Hint
我的想法:
我的代码:
data_list = []
def func():
while True:
try:
line = input()
if line == '':
break
data_list.append(line)
except:
break
if __name__ == '__main__':
func()
# 对读取的数据进行操作
stack_list = []
for item in data_list:
list_in = list(item)
stack = []
for i in range(0, len(item)):
if item[i] == '(':
stack.append('$')
elif item[i] == ')':
flag = True
for j in range(i - 1, -1, -1):
if stack[j] == '$':
flag = False
stack[j] = ' '
stack.append(' ')
break
if flag:
stack.append('?')
else:
stack.append(' ')
stack_list.append(stack)
for item1, item2 in zip(data_list, stack_list):
print(item1)
print(''.join(item2))