描述
設計一種方法,通過給重復字符計數來進行基本的字符串壓縮。
例如,字符串 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/>";