【四脚猫】每日一题(11月13日):通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序, 将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: (1)仅压缩连续重复出现的字符。比如字符串”abcbc”由于无连续重复字
【四脚猫】每日一题(11月13日):通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,
<?php /** * 字符串,重复值压缩 * @param string $str 字符串 * @param string $code_type encode|decode * @return string|mixed */ function str_compress($str, $code_type='encode') { $code_type = strtolower(trim($code_type)); if ('encode' == $code_type || $code_type) { $res = preg_replace_callback('#(.)(\1+)#is', function($match){ return $match [1] . '[' . strlen($match[0]) . ']'; }, $str); } else { $res = preg_replace_callback('#(.)\[(\d+)\]#is', function($match){ return str_repeat($match [1], $match [2]); }, $str); } return $res; } // 测试 ----------------- $old_str = $str = 'aavaabbcce'; echo $old_str; echo "<hr />"; $str = str_compress($str); echo $str; echo "<hr />"; $str = str_compress($str, 0); echo $str; echo "<hr />"; if ($str == $old_str) { echo 1; } else { echo 0; }