Look And Say 序列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