字符串压缩

描述

设计一种方法,通过给重复字符计数来进行基本的字符串压缩。

例如,字符串 aabcccccaaa 可压缩为 a2b1c5a3 。而如果压缩后的字符数不小于原始的字符数,则返回原始的字符串。

可以假设字符串仅包括a-z的字母。

样例

str=aabcccccaaa 返回 a2b1c5a3
str=aabbcc 返回 aabbcc
str=aaaa 返回 a4

 1 <?php
 2 /**
 3  * 字符串压缩
 4  * 循环字符串,然后找到每个字符有多少个重复的
 5  * 把原字符和重复数拼接到一个新的字符串中
 6  */
 7 function solution($str)
 8 {
 9     $len = strlen($str);
10     $ret = '';
11     $j = 0;
12     for($i=0; $i<$len;$i=$j)
13     {
14         while($j < $len && $str[$i] == $str[$j])
15         {
16             ++$j;
17         }
18         $ret .= $str[$i];
19         $ret .= $j - $i;
20     }
21     return strlen($ret)<$len ? $ret : $str;
22 }
23 
24 $str = 'aabcccccaaa';
25 echo solution($str) . "<br/>";
26 $str = 'aabbcc';
27 echo solution($str) . "<br/>";
28 $str = 'aaaa';
29 echo solution($str) . "<br/>";

猜你喜欢

转载自www.cnblogs.com/573583868wuy/p/9291904.html