in reply to Re^3: IT's not counting...
in thread IT's not counting...
The trick is to keep a counter. Increase the counter by 1 each time you see a '(', decrement the counter by 1 each time you see a ')'. If the counter ever becomes less than 0, or if the counter isn't 0 when reaching the end of the string, the parens aren't balanced. Otherwise, they are.sub is_balanced { my $_ = shift; my $c = 0; while (/([()])/g) { if ($1 eq '(') {$c++; next} return if --$c < 0; } $c == 0; }
|
|---|