锁定老帖子 主题:赴盛大面试,分享几个面试题
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-06
下一站,火星 写道 (A(B)(C(D)(E))F)
可以用一行正则表达式做 求正则解决方案 |
|
返回顶楼 | |
发表时间:2010-12-06
0704681032 写道 貌似咱们学校没人学php..人才比较稀缺
目前很少有学校开PHP课程 都靠自学 |
|
返回顶楼 | |
发表时间:2010-12-07
其实感觉,不是校园招聘的话,透露别人面试题不太好吧.
|
|
返回顶楼 | |
发表时间:2010-12-07
不考虑左右括号是否完全匹配的话,如下
function getcontent($findLoc,$str){ $start=-1;$end=-1;$left=0;$count=0; $subCount=0; //位置找到后的左右括号匹配计数 for($i=0;$i<$len;$i++){ if( '('==$str[$i] ){ $count++; if( $count==$findLoc ) $start=$i; //找到,记录开始位置 if( -1!=$start ) ++$subCount; //找到后重新记录左括号计数 } if( ')'==$str[$i] ){ // 有开始位置后才开始匹配结束 if( -1!=$start ){ $subCount--; // 左右括号匹配完成后记录结束位置并跳出循环 if( $subCount==0 ){ $end=$i; break; } } } } //echo "开始: $start \t结束: $end \t"; return substr($str,$start,$end-$start+1); } 要考虑左右括号完全匹配的话,加上左右括号计数,左括号增,右括号减,最后一比是否为零就好了 |
|
返回顶楼 | |
发表时间:2011-03-09
黑暗浪子 写道
jancy 写道
昨日赴上海盛大面试,应聘PHP工程师。
提前10分钟来到一楼大厅,大门口和门禁处都有2个门卫,俨然一副“正规军” 的样子,给人一种很严肃的感觉。
9、有一字符串格式如下:
(A(B)(C(D)(E))F) 字符串中的括号成对出现,写一函数取出第N(以左括号出现的顺序来索引)对括号里的内容。
例如:
function getcontent($id,$str){ ... } $str = '(A(B)(C(D)(E))F)'; getcontent(3,$str);
得到结果为(C(D)(E))
恳请各位大虾谈谈最后2题的最优解答。 看见第1题我就想起六月份去盛大面试那次了。这个问题也问过我,我直接回答:孔乙己老是问人家茴字有几种写法,你还记得你老师教过你这4种写法吗?然后面试官就问下一个问题。这年头面试可真是很让我哭笑不得,这种nc问题也问得出,是不是随便拉个人就可以做面试官了? 这种考的就是对基础知识的掌握。 |
|
返回顶楼 | |
发表时间:2011-07-15
public static String getContent(int index,String src) { char[] cs=src.toCharArray(); int count=1,countLeft=1,countRight=1; String result=""; for(int i=0;i<cs.length;i++) { char c=cs[i]; if(c=='(') { if(count==index) { for(int j=i;j<cs.length;j++) { char c2=cs[j]; if(c2=='(') { countLeft++; } if(c2==')') { countRight++; } if(countLeft==countRight) { result=src.substring(i, j+1); break; } } break; } count++; } } return result; } public static void main(String[] args) { String src="(A(B)(C(D)(E))F)"; System.out.println(CoupleBrackets.getContent(5, src)); } 突破口:确定括号index之后,只要找到此index的左括号的索引,然后向后遍历,左括号等于右括号时的索引即为结束点 |
|
返回顶楼 | |