按规则解码字符串
请实现以下函数string decode(string str),该函数功能是解密一个给迪昂字符串,解密的规则是将两个数字间(前面没有数字的情况下算开头和数字间)的字符串重复数字次数,比如a2bc3d1,解密为 aabcbcbcd
<?php
function readstr($str, $len, $start) {
$end = $start;
while ( $end < $len && !is_numeric($str[$end]) ) { $end++;}
return [substr($str, $start, $end-$start), $end];
}
function readnums($str, $len, $start) {
$end = $start;
while ( $end < $len && is_numeric($str[$end]) ) {$end++;}
return [substr($str, $start, $end-$start), $end];
}
function decode($str) {
$res = '';
$i = 0;
$len = strlen($str);
while ($i < $len) {
list($key, $i) = readstr($str, $len, $i);
list($val, $i) = readnums($str, $len, $i);
while ($val--) {
$res .= $key;
}
}
return $res;
}
print_r(decode('a1')."\n");
//a
print_r(decode('ab2c3')."\n");
//ababccc
print_r(decode('a2bc12d3')."\n");
//aabcbcbcbcbcbcbcbcbcbcbcbcddd