方正的笔试题是在面试完我后再做的,其实当时笔试对我来说都没多少意义了,面试官几乎很清楚我的底细了,但是笔试题的最后两道程序设计很吸引人,于是我坚持做完了它,到12点多才离开方正。
程序设计第一题:设计算法对英文名字排序,用C/C++实现。比如“toms kite,john youte,tom clusze,lucy wade” 排序后的输出结果应为"jjohn youte,lucy wade,tom clusze,toms kite".呵呵,还算比较有难度吧,要点是要考虑内存和时间上的优化.
程序设计第二题:设计一个搜索算法,实现如下功能.在一个字符串中S(长度m>3)可能有n个子符串(长度为3)与之匹配(含重复匹配).怎样分解S,使匹配子字符串的个数达到最大(含重复匹配).例如,字符串S="012312345231",需要匹配的字符串为"123","231",则当S分解为0,123,123,45,231是,匹配数为4;当S分解为01,231,2345,231时,匹配数为2,则前一种分解方法比第二种更好.考虑时间和内存优化问题.
这两道题个人认为比较有水平,我做了很久,最后把代码写出来了,估计方法应该没错,只是时间和内存的开销应该不是最优的了,搜索算法应该用KMP算法匹配字符最优,总之,方正面试归来,发现自己显然仅仅会写程序而已,做软件,以后慢慢历练吧.路漫漫其修远啊~~