Sha256: 778a5c16656f59357ddaf428123384c034fcf237035ed67d0937f73ede5a6fbb
Contents?: true
Size: 1.23 KB
Versions: 396
Compression:
Stored size: 1.23 KB
Contents
<?php function brackets_match(string $input) : bool { $characters = str_split($input); $bracketsStack = array_reduce( $characters, function (array $stack, string $char) : array { $isOpeningBracket = function ($char) { return in_array($char, ['[', '{', '(']); }; $isClosingBracket = function ($char) { return in_array($char, [']', '}', ')']); }; $matchesLastOpenBracket = function ($char, $stack) { $prev = array_pop($stack); $lookupOpeningBracket = [ ']' => '[', '}' => '{', ')' => '(', ]; return $lookupOpeningBracket[$char] == $prev; }; if ($isOpeningBracket($char)) { array_push($stack, $char); } if ($isClosingBracket($char)) { if ($matchesLastOpenBracket($char, $stack)) { array_pop($stack); } else { array_push($stack, $char); // unopened bracket } } return $stack; }, [] ); return empty($bracketsStack); }
Version data entries
396 entries across 396 versions & 1 rubygems