首页 > 编程语言 > 详细

中国大学MOOC-数据结构与算法实战 P6 括号匹配 (15 分)

时间:2019-10-30 22:36:00      阅读:214      评论:0      收藏:0      [点我收藏+]

检查一段C语言代码的小括号( )、 中括号 [ ] 和大括号{ } 是否匹配。

输入格式:

在一行中输入一段C语言代码,长度不超过1000个字符(行末以换行符结束)。

输出格式:

第一行输出左括号的数量和右括号的数量,中间以一个空格间隔。
若括号是匹配的,在第二行打印YES,否则打印NO

输入样例1:

for(int i=0; i<v; i++){ visited[i] = 0; for(int j=0; j<v; j++) scanf("%d",&(g->Adj[i][j])); }

输出样例1:

8 8
YES

输入样例2:

for(int i=0; i<v; i++) a(i]=0;

输出样例2:

2 2
NO


思路就是利用栈,先把左括号入栈,当扫描到右括号时,判断栈顶元素是否为左括号,是就出栈,不是则匹配失败。最后判断栈是否为空,空栈说明匹配成功,否则失败。
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/10/30 21:47
# @Author : Moewww
# @File : P9.py
# @Software:PyCharm
strings = input()
s = list()
flag = 1
n, m = 0, 0

for ch in strings:
    # print(s)
    if ch == ( or ch == [ or ch == {:
        n = n + 1
        s.append(ch)
    elif ch == ) or ch == ] or ch == }:
        m = m + 1
        if s:
            if (ch == ) and s[-1] == () or (ch == ] and s[-1] == [) or (ch == } and s[-1] == {):
                s.pop()
        else:
            flag = 0
print("{} {}".format(n, m))
if flag == 1:
    if s:
        print("NO")
    else:
        print("YES")
else:
    print("NO")

 

 

 

中国大学MOOC-数据结构与算法实战 P6 括号匹配 (15 分)

原文:https://www.cnblogs.com/intbjw/p/11768403.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!