Look And Say 序列

Look And Say序列,简单的说就是根据你看到的数字,写出下一个数字。比如:

第一个数字是:1。

看着第一个数字你可以说1个1,那么第二个数字就是:11。

看着第二个数字你可以说2个1,即第三个数字是:21。

看着第三个数字你可以说1个2,1个1,即第四个数字是:1211。

看着第四个数字你可以说1个1,1个2,2个1,即第五个数字是:111221。

…………

根据详细的说明可以参见:http://en.wikipedia.org/wiki/Look-and-say_sequence

下面用PHP实现这个序列,如下:

 
  
function look( $str )
{
$len = strlen ( $str );
$count = 0 ;
$result = '' ;
$temp = $str [ 0 ];
for ( $i = 0 ; $i < $len ; $i ++ )
{
if ( $temp != $str [ $i ])
{
$result .= $count . $temp ;

$temp = $str [ $i ];
$count = 1 ;
}
else
{
$count ++ ;
}
}
$result .= $count . $temp ;
return $result ;
}

$test_str = " 1 " ;
echo $test_str . ' </br> ' ;
for ( $i = 0 ; $i < 10 ; $i ++ )
{
$test_str = look( $test_str );
print $test_str . " </br> " ;
}

注意look函数中的for循环,当$len-1时,$result并未累加最后一位数字的统计结果,所以在循环完成后再次累加一次。

最后输出结果:

1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211
11131221133112132113212221

转载于:https://www.cnblogs.com/ywxgod/archive/2011/05/21/2052795.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值