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

昨天同事给我看了一道面试题目,说的是给任意一个字符串,比如'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;

 

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

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值