Look And Say 序列php实现代码

yipeiwu_com6年前PHP代码库
比如:
第一个数字是: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

作者:ywxgod

相关文章

基于php编程规范(详解)

今天写这个是为了 提醒自己 编程过程 不仅要有逻辑 思想 还有要规范 代码 这样可读性 1、PHP 编程规范与编码习惯最主要的有以下几点:  1 文件说明  2 fu...

CI框架中site_url()和base_url()的区别

在使用CI框架的使用经常碰到跳转和路径方面的问题,site_url()和base_url()很容易混淆,下面来说说他们的区别! 假如你config文件里面的base_url和index_...

php 前一天或后一天的日期

复制代码 代码如下:<?php     date_default_timezone_set('PRC'); //默认时区 ...

PHP开发中解决并发问题的几种实现方法分析

本文实例讲述了PHP开发中解决并发问题的几种实现方法。分享给大家供大家参考,具体如下: 对于商品抢购等并发场景下,可能会出现超卖的现象,这时就需要解决并发所带来的这些问题了 在PHP语言...

php警告Creating default object from empty value 问题的解决方法

解决方法是找到报错的位置然后看哪个变量是没有初始化而直接使用的,将这个变量先实例化一个空类。如:复制代码 代码如下:$ct = new stdClass();修改文件相应代码,如:复制代...