[字号:  ]

google2009年在华南地区的两道笔试题目,有兴趣的可以试试

发布时间:2008-9-24 11:07   作者: feifengxlq   信息来源: PHPChina 开源社区门户
备注:不能使用PHP特有的函数,比如in_array,array_count_values等
题目1要求:
     给定一个字符串str,要求按照输入的顺序输出不同字符的个数。注意,不区分大小写。
     比如str = "bcCd*ba" 对应的函数输出结果为  b:2 c:2 d:1 *:1 a:1(注意:要按照顺寻,同时考虑性能)


题目2 :
  要求大致意思:
* 给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含),指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
* 比如,A=[1,0] K=21 那么输出结构应该为100


题目多想想不难,但要在半个小时完成还是有点难度的。有兴趣的同学可以去试试。

我提供了两个最简单的思路给大家参考下,具体在http://www.phpobject.net/blog/index.php

[ 本帖最后由 feifengxlq 于 2008-9-24 13:41 编辑 ]

最新回复

Muddle at 2008-9-24 11:10:36
半个小时就这两道题?
feifengxlq at 2008-9-24 11:14:02
总共是10个选择题,3道编程题目。。
这是其中的两道编程题目。。
Muddle at 2008-9-24 11:20:32
那时间确实比较紧
心痛 at 2008-9-24 11:47:58


   
shanji at 2008-9-24 11:57:00
第一个有问题
字符串里有“0”怎么办
$a = "0abbfadfa";

一片空白
feifengxlq at 2008-9-24 12:12:36

QUOTE:

原帖由 心痛 于 2008-9-24 11:47 发表

    $a = "abbfadfa";
    $i = 0;
    $tmpArr = array();
    $resultArr = array();
    while($chr = $a[$i]){
        if(in_array($chr,$tmpArr)){
            $resultArr[$chr]++;
        }else{
...
之前没有仔细看。。
第二题,你是使用遍历。。。呵呵,应该有更好的方法的。


[ 本帖最后由 feifengxlq 于 2008-9-24 13:47 编辑 ]
Muddle at 2008-9-24 12:25:13

QUOTE:

原帖由 feifengxlq 于 2008-9-24 12:12 发表


第二个你明显没有理解意思,需要找出的是大于K的最小正整数
他的思路是对的。
心痛 at 2008-9-24 12:28:49

QUOTE:

原帖由 feifengxlq 于 2008-9-24 12:12 发表


第二个你明显没有理解意思,需要找出的是大于K的最小正整数
我这个不是么?
还有就是如果有0的话,就用for循环了~考虑不完善·~

[ 本帖最后由 心痛 于 2008-9-24 12:32 编辑 ]
Muddle at 2008-9-24 12:31:23
第一题最简单的解法应该是:
sentrychen at 2008-9-24 13:00:05


[ 本帖最后由 sentrychen 于 2008-9-24 14:21 编辑 ]
心痛 at 2008-9-24 13:02:35

QUOTE:

原帖由 Muddle 于 2008-9-24 12:31 发表
第一题最简单的解法应该是:

$a = "0nabbfadfaaaacfdn" ;
$strlen = strlen( $a );
for ( $i = 0 ; $i < $strlen ; $i++ ) $na[$i] = strtolower($a[$i]) ;
$nac = array_count_values ($na) ;
foreach ( $ ...
效率比我的高3倍,不过我不明白的是,我的也是用了2个循环,为什么你的效率高出那么多呢
sentrychen at 2008-9-24 13:07:36

QUOTE:

原帖由 Muddle 于 2008-9-24 12:31 发表
第一题最简单的解法应该是:

$a = "0nabbfadfaaaacfdn" ;
$strlen = strlen( $a );
//for ( $i = 0 ; $i < $strlen ; $i++ ) $na[$i] = strtolower($a[$i]) ;
$a = strtolower($a); //还可以再简单一点
$nac = array_count_values ($na) ;
foreach ( $ ...
shanji at 2008-9-24 13:09:29
我觉得是array_count_values 的功劳
心痛 at 2008-9-24 13:10:44
不知道他的array_count_values是怎么实现的,如果还要用循环遍历数组的话,岂不是用了3个循环?
xyiyo at 2008-9-24 13:38:33
第一题

那么长..估计效率不会高到那里....看看楼上各位的那么短....
Muddle at 2008-9-24 13:41:59
第一题楼主加了新的备注: 不能使用PHP特有的函数,比如in_array,array_count_values等
Muddle at 2008-9-24 13:46:47

QUOTE:

原帖由 sentrychen 于 2008-9-24 13:07 发表
没错,strtolower用在整个字串外效率更高
心痛 at 2008-9-24 13:47:50
我明白了,估计是in_array()的原因,其实不用in_array()也好解决啊,直接用strstr()或者strpos()就可以了
feifengxlq at 2008-9-24 13:49:24

QUOTE:

原帖由 Muddle 于 2008-9-24 12:25 发表

他的思路是对的。
这种思路是最简单的,但也是效率最不好的。
看看大家能想到比遍历更好的方法不。
Muddle at 2008-9-24 13:54:30

QUOTE:

原帖由 心痛 于 2008-9-24 13:47 发表
我明白了,估计是in_array()的原因,其实不用in_array()也好解决啊,直接用strstr()或者strpos()就可以了
我不知道这题的实际意义在哪,又没有中文在里面。