统计字符串相同且连续字符的数目

昨天同事给我看了一道面试题目,说的是给任意一个字符串,比如'aaaabbccazzggggg',然后写一个函数,最后将字符串输出为a4b2c2a1z2g5。起初自己想偏了,想用递归来做,想的相对比较复杂。(递归应该是可以的,有时间再好好研究一下)。后来重新整理一下思路,很快就写出来了。PHP代码如下:

<?php
function test($str){
$key = 0;
$arrChar[$key] = $str{0};//第一个字符
$arrCount[$key] = 1;//与第一字符相对于的数量
$length = strlen($str);

for ($i=1;$i<$length;$i++){

if($arrChar[$key] == $str{$i}){
$arrCount[$key] = $arrCount[$key] + 1;
}else{
$key = $key + 1;
$arrChar[$key] = $str{$i};
$arrCount[$key] = 1;
}
}

$count = count($arrChar);
$return_str = '';
for($i = 0; $i < $count; $i++){
$return_str .= $arrChar[$i];
$return_str .= $arrCount[$i];
}
return $return_str;
}
$str = test('aaaabbccazzggggg');
echo $str;exit;

 

同事自己也写了一个,看上去比我写的简单:

统计字符串相同且连续字符的数目

但发现他这个写法是有问题的,只是对连续的字符串去重和统计,后面相同的被丢弃了。

后面要研究一下递归的写法。