分享今天面试的三道题 面试题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第二题思路:对于每个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: AB22222: AB5123123: ABC23412341234: ABCD2222222: 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/>"; }} 不至于吧?全是基础题,不要自己为难自己一、$ar = range(1, 54);shuffle($ar);print_r($ar);二、用正则(既然第一题是基础,那么第二题也不会有过高的要求)$qq = array('4323254', '5723723');$p = array('/.*(\d\d)\\1.*/', '/.*(\d\d\d)\\1.*/');$r = array('ABAB $0', 'ABCABC $0');$t = preg_replace($p, $r, $qq);print_r($t);Array( [0] => ABAB 4323254 [1] => ABCABC 5723723) 第二题是什么意思 AB ABC?怎么我看不懂 第三题flash和php通信,要在flash那边传参数过来才行。 $qq = array('4323254', '5723723', '222222');$p = array('/.*(\d\d)\\1.*/', '/.*(\d\d\d)\\1.*/');$r = array('ABAB $0', 'ABCABC $0');$t = preg_replace($p, $r, $qq);print_r($t);得Array( [0] => ABAB 4323254 [1] => ABCABC 5723723 [2] => ABCABC ABAB 222222)有什么不对吗? 当然不对了222222这个是属于AAAAAA的,怎么算是那2个格式? 222222 既符合 ABCABC 的规则,又符合 ABAB 的规则打个比方,用你的那个正则的形式如果再来一个222222的号码,那就不正确了,不可能说来一个号码加一个规则的 打个比方,用你的那个正则的形式如果再来一个222222的号码,那就不正确了,不可能说来一个号码加一个规则的还有如果只是22222呢?那你说他是ABAB形式?那我只能说汗颜,无话可说 不错,但题目并没有给出相邻数相同的识别规则,当然就不需要单列了考虑到一般的需求,所以我才有 #8 的代码当然不对了222222这个是属于AAAAAA的,怎么算是那2个格式? 题目是:二、公司要和QQ合作,提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则。如4323254,规则为:ABAB。5723723,规则为ABCABC。一般不应在题目之外附加条件吧? 那是你不理解题目而已人家题目都说是任意的号码,后面2个后面只是打一个比方而已,并不是只是2个号码呵呵,那我无话可说,人家这题都声明了根据号码来找出号码的规则,并不固定,你却说那是自己臆测,自己加条件,当我啥都不懂,啥都没说吧那你的意思就是说,先列出所有的进可能的规则,然后用号码去里面匹配就完了呗呵呵提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则这句话应该很清楚,“请检测QQ好嘛的规则”难道说规则已知?那我确实愚昧了 既然是“检测规则”,自然是规则已存在了那是你不理解题目而已人家题目都说是任意的号码,后面2个后面只是打一个比方而已,并不是只是2个号码呵呵,那我无话可说,人家这题都声明了根据号码来找出号码的规则,并不固定,你却说那是自己臆测,自己加条件,当我啥都不懂,啥都没说吧那你的意思就是说,先列出所有的进可能的规则,然后用号码去里面匹配就完了呗呵呵提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则这句话应该很清楚,“请检测QQ好嘛的规则”难道说规则已知?那我确实愚昧了 第三题,可以在游戏开始时,去请求一个php页面,将消息发送至php页面,php页面再去记录玩家玩的信息,如果比如ID,昵称,时间等。也可以直接在flash端使用 socket方式与服务器的服务建立联系。 我记得flash中好像可以调用php页面中的js的,所以访问动态页面地址也是可以的吧。我之前做过flash与aspx页面的交互,做flash抽奖模块时。 动态页面端如果执行成功就write("success=1"),这时flash中一可以收到success的值,也可以不用在动态页面端输出这些字符串(若flash端不需要知道执行结果的情况) 那是你不理解题目而已人家题目都说是任意的号码,后面2个后面只是打一个比方而已,并不是只是2个号码呵呵,那我无话可说,人家这题都声明了根据号码来找出号码的规则,并不固定,你却说那是自己臆测,自己加条件,当我啥都不懂,啥都没说吧那你的意思就是说,先列出所有的进可能的规则,然后用号码去里面匹配就完了呗呵呵提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则这句话应该很清楚,“请检测QQ好嘛的规则”难道说规则已知?那我确实愚昧了跟你讨论没意义,如果是已知规则,人家就不需要叫你去检测,而是叫你写程序来匹配并且告诉你规则了没必要跟你讨论这个下去,你喜欢钻文字牛角尖你就去钻吧这道题纯粹就是考简单的算法而已,写一个简单的算法能检测任意一个号码的规则这三道题第一题主要考的是数组的运用第二题考的是算法第三题考的是flash与php的通信 你好问一下里面的while($qq)怎么不是死循环啊 你好问一下里面的while($qq)怎么不是死循环啊...每次循环完,$qq的位数都减一位,怎么会死循环啊?$qq = substr($qq,1); 他不是有 $qq = substr($qq,1); 吗?每次去掉第一个字符,直到为空 你好问一下里面的while($qq)怎么不是死循环啊怎么会是死循环呢?while的用法你了解么?不过他这个算法写的有点啰嗦而已 你好问一下里面的while($qq)怎么不是死循环啊怎么会是死循环呢?while的用法你了解么?不过他这个算法写的有点啰嗦而已呵呵,多谢 #3是一个高并发计数器+nosql的应用场景,how about nodejs+redis? 这种情况确实是忘记考虑了,#1的也忽略了2222这种应该是AAAA的规则。 flash如何与php通信呢?第三道题没有人讨论吗? 1.利用页面刷新,存在session2.借助xml通信 第二题反了吧,应该是QQ提供公共API,然外面的人调用。不然来一个公司就要响应一个接口,腾讯的人不累死,也不符合软件是设计思想 第二题,综合前面各位大大,简单写下,欢迎给意见function gz($qq){ $len = strlen($qq); $str = "ABCDEFG"; $ret = '无规则'; $first = substr($qq,0,1); if($len==substr_count($qq,$first)) return 'AA'; for($i=0;$i<intval($len/2);$i++){ for($j=1;$j<intval($len/2)+1;$j++){ $a = substr($qq,$i,$j); $b = substr($qq,$i+$j,$j); if($a==$b){ $ret = substr($str,0,$j).substr($str,0,$j); } } } return $ret;}echo gz('888888').'<br>';echo gz('6521218').'<br>';echo gz('8712312369').'<br>';echo gz('881881');运行结果:AAABABABCABCABCABC 第二题我也没有想出来。。其他还好呢。如果仅是:4323254,规则为:ABAB。5723723,规则为ABCABC的话还是蛮简单。如果有33224556 AABB 22222 AAAAA的话就麻烦了 关于下拉列表与数据库的问题。。 新手问一个简单的问题!希望各位帮忙! 请问一下: facebook的应用开发是什么原理? 用PHP如何从数据库检索某字段的数据? 使用php读取TXT文件的数据(单词、音标和翻译)到另一个TXT文件中,出现乱码,是什么原因? 问一个联合查询的语句 通过email里的一个地址可以更改数据。 这一类:_FILES[] 变量的详细资料在那里可以找到? 问?怎么在iis装php4.31版本?需要在系统中怎么配置。(在线等待) 哪里有PHP的编译器的源代码? curl上传图片文件的问题。 求大神指点成就系统设计
对于每个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/>";
}
}
一、$ar = range(1, 54);
shuffle($ar);
print_r($ar);二、用正则(既然第一题是基础,那么第二题也不会有过高的要求)$qq = array('4323254', '5723723');
$p = array('/.*(\d\d)\\1.*/', '/.*(\d\d\d)\\1.*/');
$r = array('ABAB $0', 'ABCABC $0');
$t = preg_replace($p, $r, $qq);
print_r($t);Array
(
[0] => ABAB 4323254
[1] => ABCABC 5723723
)
$p = array('/.*(\d\d)\\1.*/', '/.*(\d\d\d)\\1.*/');
$r = array('ABAB $0', 'ABCABC $0');
$t = preg_replace($p, $r, $qq);
print_r($t);得
Array
(
[0] => ABAB 4323254
[1] => ABCABC 5723723
[2] => ABCABC ABAB 222222
)
有什么不对吗?
222222这个是属于AAAAAA的,怎么算是那2个格式?
那我只能说汗颜,无话可说
222222这个是属于AAAAAA的,怎么算是那2个格式?
二、公司要和QQ合作,提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则。如4323254,规则为:ABAB。5723723,规则为ABCABC。一般不应在题目之外附加条件吧?
那是你不理解题目而已人家题目都说是任意的号码,后面2个后面只是打一个比方而已,并不是只是2个号码呵呵,那我无话可说,人家这题都声明了根据号码来找出号码的规则,并不固定,你却说那是自己臆测,自己加条件,当我啥都不懂,啥都没说吧那你的意思就是说,先列出所有的进可能的规则,然后用号码去里面匹配就完了呗
呵呵提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则这句话应该很清楚,“请检测QQ好嘛的规则”
难道说规则已知?
那我确实愚昧了
那是你不理解题目而已人家题目都说是任意的号码,后面2个后面只是打一个比方而已,并不是只是2个号码呵呵,那我无话可说,人家这题都声明了根据号码来找出号码的规则,并不固定,你却说那是自己臆测,自己加条件,当我啥都不懂,啥都没说吧那你的意思就是说,先列出所有的进可能的规则,然后用号码去里面匹配就完了呗
呵呵提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则这句话应该很清楚,“请检测QQ好嘛的规则”
难道说规则已知?
那我确实愚昧了
那是你不理解题目而已人家题目都说是任意的号码,后面2个后面只是打一个比方而已,并不是只是2个号码呵呵,那我无话可说,人家这题都声明了根据号码来找出号码的规则,并不固定,你却说那是自己臆测,自己加条件,当我啥都不懂,啥都没说吧那你的意思就是说,先列出所有的进可能的规则,然后用号码去里面匹配就完了呗
呵呵提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则这句话应该很清楚,“请检测QQ好嘛的规则”
难道说规则已知?
那我确实愚昧了
跟你讨论没意义,如果是已知规则,人家就不需要叫你去检测,而是叫你写程序来匹配并且告诉你规则了
没必要跟你讨论这个下去,你喜欢钻文字牛角尖你就去钻吧这道题纯粹就是考简单的算法而已,写一个简单的算法能检测任意一个号码的规则这三道题第一题主要考的是数组的运用
第二题考的是算法
第三题考的是flash与php的通信
你好问一下里面的while($qq)怎么不是死循环啊
你好问一下里面的while($qq)怎么不是死循环啊...每次循环完,$qq的位数都减一位,怎么会死循环啊?$qq = substr($qq,1);
每次去掉第一个字符,直到为空
你好问一下里面的while($qq)怎么不是死循环啊
怎么会是死循环呢?
while的用法你了解么?
不过他这个算法写的有点啰嗦而已
你好问一下里面的while($qq)怎么不是死循环啊
怎么会是死循环呢?
while的用法你了解么?
不过他这个算法写的有点啰嗦而已呵呵,多谢
第三道题没有人讨论吗?
2.借助xml通信
function gz($qq){
$len = strlen($qq);
$str = "ABCDEFG";
$ret = '无规则';
$first = substr($qq,0,1);
if($len==substr_count($qq,$first)) return 'AA';
for($i=0;$i<intval($len/2);$i++){
for($j=1;$j<intval($len/2)+1;$j++){
$a = substr($qq,$i,$j);
$b = substr($qq,$i+$j,$j);
if($a==$b){
$ret = substr($str,0,$j).substr($str,0,$j);
}
}
}
return $ret;
}
echo gz('888888').'<br>';
echo gz('6521218').'<br>';
echo gz('8712312369').'<br>';
echo gz('881881');运行结果:AA
ABAB
ABCABC
ABCABC