字符串壓縮


描述

設計一種方法,通過給重復字符計數來進行基本的字符串壓縮。

例如,字符串 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/>";

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM