I understand that the solution to this problem relies on the value of check meaning that there must be an equal number of opening and closing brackets.
However what I don’t understand is why it still works for ‘][’ or ‘[]][’
I understand that the solution to this problem relies on the value of check meaning that there must be an equal number of opening and closing brackets.
However what I don’t understand is why it still works for ‘][’ or ‘[]][’
Hi @Mauricio1,
Good observation, but there is a catch.
case ][
If the program gets ]
(closing bracket) before [
opening bracket then check
will become less than 0
and as the program is checking for check < 0
in every iteration of the loop. Thus, it will break and return false
.
case []][
In the first iteration of the loop when bracket
contains [
, check
will become 1, moving on to the 2nd iteration where bracket
contains [
, check
will become 0 but will not return true
as the loop breaks only if check < 0
. In the 3rd iteration, when bracket
contains ]
, check
will become -1 which causes the loop to break and return false
.
P.S. Please look into the screenshot attached for reference:
Hope this clears the confusion
can u help with this bracket ‘[[[[]]’, which has more opening brackets than closing ones, after the sample code runs thru each iteration the output should not meet the break condition?
Thx!
Hi @UniThe_G ,
As the bracket_string
contains four "["
(opening brackets) initially thus after 4 iterations, check
will contain 4. In the 5th and 6th iteration, as bracket
contains “]
”, thus check will become 2 (4 - 2 = 2).
Hence, check == 0
will become false
.
P.S. In this case, loop will not break but we get false
because after completing the loop, check
contains 2, so check == 0
(line 13) will return false
.
Hope this clears the confusion
Sami thanks a lot for the clarification
Thank you very much Sami =D