Maison >développement back-end >tutoriel php >分享今日面试的三道题
分享今天面试的三道题
公司名不说了。
一、模拟扑克发牌,有52张扑克牌,我们给它编号,从1,2,3...52。一共52张牌。请使用数组装载这些牌,然后再打乱顺序输出。比如:43,2,18,21...3。
二、公司要和QQ合作,提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则。如4323254,规则为:ABAB。5723723,规则为ABCABC。
三、假如我们现在要记录下网站中每一个flash小游戏被玩过多少次,每个游戏在一个单独的页面。
(a)请问在玩这些游戏的时候如何记录数据?
(b)如果计算出每个游戏被玩过多少次?(如果使用数据库的话,请写出SQL)
第二题我没答出来。请教下如何实现那个需求。
题量还不错,就三道,不过这些题考的貌似没啥针对性,比那些一写就要写2小时的好多了。
------解决方案--------------------
第二题思路:
对于每个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");<br />$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";<br /><br />foreach($qqNs as $tmp){<br /> $max = 1;<br /> $qq = $tmp;<br /> while($qq){<br /> for($i=1,$n = floor((strlen($qq)/2));$i <= $n;$i++){<br /> $preTree = substr($qq, 0, $i);<br /> $postTree = substr($qq,$i,$i);<br /> if($preTree == $postTree){<br /> if($i>=$max){<br /> $max = $i;<br /> }<br /> }<br /> }<br /> $qq = substr($qq,1);<br /> }<br /> echo $tmp.": ".substr($str,0,$max)."<br/>";
4323254: AB<br />22222: AB<br />5123123: ABC<br />23412341234: ABCD<br />2222222: ABC
$ar = range(1, 54);<br />shuffle($ar);<br />print_r($ar);
$qq = array('4323254', '5723723');<br />$p = array('/.*(\d\d)\\1.*/', '/.*(\d\d\d)\\1.*/');<br />$r = array('ABAB $0', 'ABCABC $0');<br />$t = preg_replace($p, $r, $qq);<br />print_r($t);Array