Codility每周一课:L7 Stacks and Queue

作者: AiFany | 来源:发表于2019-01-28 22:34 被阅读3次
7.png
P7.1 Brackets

Determine whether a given string of parentheses (multiple types) is properly nested.

  • P7.1 括号嵌套
    判断一个串(多种类型)中的括号是否是正确的嵌套

满足以下任一条件,则认为由N个字符组成的字符串S是正确嵌套的:

  1. S为空;

  2. S的形式为"(U)"或"[U]"或"U",其中U是正确嵌套的字符串;

  3. S的形式为"VW",其中V和W是正确嵌套的字符串;

例如,字符串"[()()]"是正确的嵌套,但"([)()]"不是正确的嵌套。

编写函数:

def solution(S)

如果字符串S由N个字符组成,则如果S嵌套正确,则返回1,否则返回0。

例如,给定S="[()()]",函数应返回1,给定S="([)()]",函数应返回0。

假定:

  1. N是区间[0,200000]中的整数;

  2. 字符串S是由以下字符中的几种组成: "(", "{", "[", "]", "}" 和 ")";

  • 解题思路

如果是括号的左半部分,就存储在列表里。如果是括号的右半部分,首先判断列表是否为空,如果是空的,则不匹配。如果不为空,则判断列表的最后一个符号是否是这个括号的左半部分,如果不是就不匹配。是的话,就把列表最后一个删除。遍历完字符串后,如果列表中依然有元素,则不匹配。如果没有,则是匹配的。

  • Python3代码
# -*- coding:utf-8 -*-
# &Author  AnFany
# Lesson 7:Stacks and Queues
# P 7.1 Brackets


def solution(S):
    """
    判断字符串S中的符号是否为正确的嵌套
    :param S: 字符串
    :return: 判断是否为正确的嵌套
    """
    left = '([{'
    brackers_dict = {'(': ')', '[': ']', '{': '}'}
    brackers = []
    if len(S) == 0:
        return 1
    else:
        for i in S:
            if i in left:
                brackers.append(i)
            else:
                try:
                    if brackers_dict[brackers[-1]] == i:
                        brackers.pop(-1)
                    else:
                        return 0
                except IndexError:
                    return 0
        if len(brackers) == 0:
            return 1
        else:
            return 0
  • 结果
image

点击获得更多编程练习题。欢迎Follow,感谢Star!!! 扫描关注微信公众号pythonfan,获取更多。

image image

相关文章

网友评论

    本文标题:Codility每周一课:L7 Stacks and Queue

    本文链接:https://www.haomeiwen.com/subject/baozjqtx.html