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

相关文章

输入值/表单提交参数过滤有效防止sql注入的方法

输入值/表单提交参数过滤,防止sql注入或非法攻击的方法: 复制代码 代码如下: /** * 过滤sql与php文件操作的关键字 * @param string $string * @r...

PHP 分页类(模仿google)-面试题目解答

笔试回答的不太好,特别是JS部分,也是许久都没复习的原因。 上机题目是要写一个仿google分页的类,当要取类似9/2的最大整数,却怎么也想不起函数ceil的名字,晕了半天。 最后测试程...

php实现留言板功能(代码详解)

php实现留言板功能(代码详解)

简单的PHP留言板制作 做基础的留言板功能  需要三张表: 员工表,留言表,好友表 首先造一个登入页面: <form action="drcl.php" metho...

php miniBB中文乱码问题解决方法

有时候一分钱难死英雄汉, 这话不假, 在技术上也是一样,如系统调试了半天, PHP就是不认mysql, 到头来只是忘了安装php5-mysql, miniBB因为简约而美丽,但国内使用人...

php实现遍历文件夹的方法汇总

php 遍历 文件夹 ,不少时候还是很需要的 /*获取所有文件*/ function get_all_files( $path ){ $list = array(); for...