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
相关推荐
-
Collatz 序列、逗号代码、字符图网格实例
1.collatz序列 编写一个名为 collatz()的函数,它 有一个名为 number 的参数.如果参数是偶数, 那么 collatz()就打印出 number // 2,并返回该值.如果 number 是奇数,collatz()就打 印并返回 3 * number + 1. 然后编写一个程序,让用户输入一个整数,并不断对这个数调用 collatz(),直 到函数返回值1. #!/usr/bin/env python3 # -*- coding:utf-8 -*- def collatz(
-
perl 指定长度并生成一个随机的DNA序列的脚本代码
复制代码 代码如下: #!/bin/perl use strict; use warnings; #进行定义 my @dna; my $dna_length; my $newbase; my $i=0; print "please input the DNA length\n"; chomp($dna_length=<>); while($i<$dna_length) { #从四个碱基中随机选取一个 my(@nucleotides)=qw/A
-
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 loo
-
js DNA动态序列比对代码
动态序列比对 function pairaln(seq1, seq2){ // scoring scheme var MATCH = 1; // +1 for letters that match var MISMATCH = -1; // -1 for letters that mismatch var GAP = -1; // -1 for any gap // initialization var score=[[]]; var pointer=[[]]; score[0][0] = 0;
-
Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例
问题:在SQL Server数据库中,有自增列这个字段属性,使用起来也是很方便的.而在Oracle中却没有这个功能,该如何实现呢? 答:在Oracle中虽然没有自增列的说法,但却可以通过触发器(trigger)和序列(sequence)来模式实现. 示例: 1.建立表 复制代码 代码如下: create table user ( id number(6) not null, name varchar2(30) not null primary key )
-
SQL Server 实现数字辅助表实例代码
数字辅助表是一个连续整数的数列,通常用来实现多种不同的查询任务.大多分两类:足够大物理数字表和表函数,前者可以称为静态的,后者可以称为动态且按需生产. 物理数字表 物理数字表通常存在一个物理表,表记录相对足够大,相关的T-SQL代码如下: IF OBJECT_ID(N'dbo.Nums', 'U') IS NOT NULL BEGIN DROP TABLE dbo.Nums; END GO CREATE TABLE dbo.Nums ( Num INT NOT NULL, CONSTRAINT
-
判断整数序列是否为二元查找树的后序遍历结果的解决方法
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果.如果是返回true,否则返回false.例如输入5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果. 8 / \ 6 10 / \ / \ 5 7 9 11因此返回true.如果输入7.4.6.5,没有哪棵树的后序遍历的结果是这个序列,因此返回false.本题网上已经有用递归单纯判断的解法. 个人解法: 先得到序列对应的中序序列, 然后看中序序列是否从小到大有序, 得出判断. 相比
-
java 基本算法之归并排序实例代码
java 基本算法之归并排序实例代码 原理:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表, * 即把待排序序列分为若干个子序列,每个子序列是有序的. * 然后再把有序子序列合并为整体有序序列. 实例代码: public class MergeSort { /** * * * * @param args */ public static void main(String[] args) { int a[] = { 49, 38, 65, 97, 76, 13,
-
Redis实现分布式锁和等待序列的方法示例
在集群下,经常会因为同时处理发生资源争抢和并发问题,但是我们都知道同步锁 synchronized . cas . ReentrankLock 这些锁的作用范围都是 JVM ,说白了在集群下没啥用.这时我们就需要能在多台 JVM 之间决定执行顺序的锁了,现在分布式锁主要有 redis . Zookeeper 实现的,还有数据库的方式,不过性能太差,也就是需要一个第三方的监管. 背景 最近在做一个消费 Kafka 消息的时候发现,由于线上的消费者过多,经常会遇到,多个机器同时处理一个主键类型的数据
-
C语言实现出栈序列
本文实例为大家分享了C语言实现出栈序列的具体代码,供大家参考,具体内容如下 题目描述: 现在有一个1-n的排列,入栈序列已知,请给出字典序最大的出栈序列. 输入格式 第一行一个整数n.(1<=n<=100) 第二行n个整数,数据确保为1-n的排列. 输出格式 输出n个整数,既字典序最大的出栈序列. 输入样例 5 1 2 4 5 3 输出样例 5 4 3 2 1 解题思路: 1.获取当前数组的最大值,并且需要知道它的下标.所以定义了两个方法,getMax来获取数组的最大值maxNum,getMa
随机推荐
- oracle用户权限管理使用详解
- jQuery制作简洁的图片轮播效果
- JavaScript的Vue.js库入门学习教程
- javascript移动设备Web开发中对touch事件的封装实例
- 在ASP.NET 2.0中操作数据之六十四:GridView批量添加数据
- 原生JS+Canvas实现五子棋游戏
- jQuery语法总结和注意事项小结
- Android Alertdialog(实现警告对话框)
- JS实现回到页面顶部动画效果的简单实例
- 全面解析设计模式中的建造者模式及相关C++实现
- js实现canvas保存图片为png格式并下载到本地的方法
- Python爬虫实现爬取京东手机页面的图片(实例代码)
- java中静态代码块与构造方法的执行顺序判断
- php-fpm中max_children的配置
- 使用Python获取并处理IP的类型及格式方法
- python画图--输出指定像素点的颜色值方法
- python内存动态分配过程详解
- Docker容器内应用服务自启动的方法示例
- mysql 8.0.15 安装配置方法图文教程(Windows10 X64)
- python中不能连接超时的问题及解决方法