Tonny's Blog 关于博客
文章
主页 > PHP
面试题之PHP字符串压缩算法
发布时间:2018-05-25 (11:22:13)    编辑:Tonny    热度:156

文章描述:面试题之PHP字符串压缩算法,附详细代码说明。
内容:

此题本为JS面试题,这里用PHP解决。

从拿到这道题到解决确实花费了一些时间,听说可以用正则表达式来写更加简单,这里就不多做研究了。

有问题可以联系QQ或者邮箱。


V{K4[`K6OL@){HM]4W18E`6.png


代码:

<?php
    class Func {
        /**
         * 字符串压缩
         * @author Tonny <990806808@qq.com>
         * @return String $res
         */
        public function zip($str = '') {
            $str .= '1';//拼接1个在意不为字母的字符,最后这个字符有在for循环中不会被拼接到$res中
            $len = strlen($str);
            $prev = '';//上一个字符,初始化为空
            $cnt = 0;//上一段字符的个数,初始化为0
            $res = '';//最终结果
            for($i = 0; $i < $len; $i++) {
                $cnt++;//字符个数累计
                if($str[$i] != $prev) {
                    //当前字符不等于上一个字符时,开始往结果中拼接一段内容
                    $cnt = $cnt > 1 ? strval($cnt) : '';//上一段字符个数为1实际拼接的字符串为空
                    $res .= $cnt . $prev;//往结果拼接内容
                    $cnt = 0;//重置
                    $prev = $str[$i];//赋值,以当前字符作为,上一个字符
                }
            }
            return $res;//返回结果
        }
    }
    $func = new Func();
    echo $func->zip('xxxyyyyyyz') . "<br>";
    echo $func->zip('cccddecc') . "<br>";
    echo $func->zip('adef') . "<br>";
    echo $func->zip('pppppppp') . "<br>";
?>

结果图:

33.jpg

END


游客评论:



您的评论:

    姓名:



热门标签


推荐阅读
img
PHP打开文件代码及细节
2018-05-25 (11:22:13)
img
PHP的单例模式
2018-05-25 (11:22:13)
img
PHP做面向对象思想的简易计算器
2018-05-25 (11:22:13)
img
PHP+ThinkPHP5常用技巧
2018-05-25 (11:22:13)
img
PHP做无限极分类
2018-05-25 (11:22:13)
img
ThinkPHP5制作简易留言板
2018-05-25 (11:22:13)