CSDN上看到的几道PHP面试题

晚上刷csdn刷到了几道面试题,感觉很精彩,特地记录下来
http://bbs.csdn.net/topics/390528993原文地址
一、模拟扑克发牌,有52张扑克牌,我们给它编号,从1,2,3…52。一共52张牌。请使用数组装载这些牌,然后再打乱顺序输出。比如:43,2,18,21…3。

二、公司要和QQ合作,提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则。如4323254,规则为:ABAB。5723723,规则为ABCABC。

三、假如我们现在要记录下网站中每一个flash小游戏被玩过多少次,每个游戏在一个单独的页面。
(a)请问在玩这些游戏的时候如何记录数据?
(b)如果计算出每个游戏被玩过多少次?(如果使用数据库的话,请写出SQL)

第一题直接两个php基本函数搞定:

$ar = range(1, 54);
shuffle($ar);
print_r($ar);

第二题思路:
对于每个qq,判断qq的前缀和后缀。树的长度从0 - strlen/2
如4323254
索引0开始的:
1位前缀:4,后缀3 不等
2位前缀:43 后缀23 不等
3位前缀的:432后缀325 不等
。。。

索引1开始的:
2前缀32 后缀32相等

计算长度最大的即可

$qqNs = array("4323254","22222","5123123","23412341234","2222222");
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

foreach($qqNs as $tmp){
    $max = 1;
    $qq = $tmp;
    while($qq){
        for($i=1,$n = floor((strlen($qq)/2));$i <= $n;$i++){
            $preTree = substr($qq, 0, $i);
            $postTree = substr($qq,$i,$i);
            if($preTree == $postTree){
                if($i>=$max){
                    $max = $i;
                }
            }
        }
        $qq = substr($qq,1);
    }
    echo $tmp.":  ".substr($str,0,$max)."<br/>";

结果:

4323254: AB
22222: AB
5123123: ABC
23412341234: ABCD
2222222: ABC

第二题
如果不是考算法,也可以简单的用正则反向引用:

$qqNs = array("4323254","22222","5123123","23412341234","2222222");
$preg = "/(\d+)(\\1)/";
foreach($qqNs as $qq){
    if(preg_match($preg,$qq,$res)){
        echo $qq.":".substr($str,0,strlen($res[1]))."<br/>";
    }
}

第三题flash和php通信,还未弄懂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值