[Python] Codility Brackets - solution not working; why?

Discussão em 'Python' iniciado por Stack, Abril 22, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to solve the codility problem below:


    A string S consisting of N characters is considered to be properly nested if any of the following conditions is true:

    • S is empty;
    • S has the form "(U)" or "" or "{U}" where U is a properly nested string;
      [*]S has the form "VW" where V and W are properly nested strings.


    For example, the string "{[()()]}" is properly nested but "([)()]" is not.

    Write a function:

    def solution(S)


    that, given a string S consisting of N characters, returns 1 if S is properly nested and 0 otherwise.

    For example, given S = "{[()()]}", the function should return 1 and given S = "([)()]", the function should return 0, as explained above.

    Write an efficient algorithm for the following assumptions:

    • N is an integer within the range [0..200,000];
    • string S is made only of the following characters: '(', '{', '[', ']', '}' and/or ')'.
    ​


    I have tried the python code below which works on the testing examples but doesn't work after submission. Could you please explain why?

    def solution(S):
    map_dict ={'(':')', '{':'}', '[':']', ')': '(', '}':'{', ']':'['}
    if len(S) == 0:
    return 1
    elif len(S) == 1:
    return 0

    if map_dict[S[0]] == S[-1]:
    return solution(S[1:-1])
    else:
    for i in range(2, len(S), 2):
    if solution(S[i:]) and solution(S[:i]):
    return 1

    return 0

    Continue reading...

Compartilhe esta Página