Decode with Bracket Errors
PHP
Hard
4 views
Problem Description
Decode k[text]. If brackets are unbalanced or number is missing, print ERROR.
Input Format
One line encoded string.
Output Format
Decoded or ERROR.
Constraints
Output length
Official Solution
<?php
$inputText=rtrim(stream_get_contents(STDIN));
if($inputText==='') exit;
$num=0; $stack=[]; $cur=''; $seenNum=false;
for($i=0,$n=strlen($inputText);$i<$n;$i++){
$ch=$inputText[$i];
if(ctype_digit($ch)){ $num=$num*10 + (ord($ch)-48); $seenNum=true; }
elseif($ch==='['){
if(!$seenNum) { echo 'ERROR'; exit; }
$stack[] = [$cur,$num];
$cur=''; $num=0; $seenNum=false;
}elseif($ch===']'){
if(!$stack){ echo 'ERROR'; exit; }
[$prev,$k]=array_pop($stack);
$rep='';
for($t=0;$t<$k;$t++) $rep.=$cur;
$cur=$prev.$rep;
}else $cur.=$ch;
}
if($stack) echo 'ERROR';
else echo $cur;
?>
Solutions (0)
No solutions submitted yet. Be the first!
No comments yet. Start the discussion!