Decode with Bracket Errors

Decode with Bracket Errors

Hard PHP PHP Error Handling 28 views
Explanation Complexity

Problem Statement

Decode k[text]. If brackets are unbalanced or number is missing, print ERROR.

Input Format

One line encoded string.

Output Format

Decoded or ERROR.

Example

2[ab]3[c]
ababccc

Constraints

Output length

Input / Output Format

Input Format
One line encoded string.
Output Format
Decoded or ERROR.
Constraints
Output length

Examples

Input:
2[ab]3[c]
Output:
ababccc

Example Solution (Public)

PHP
<?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;
?>

Official Solution Code

<?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;
?>
Please login to submit solutions.
Editor
Output

                                        
Please login to submit solutions.