怎样看待LeetCode 28Implement strStr()
所以一般为了避免歧义,我让面试者用C/C++写一个能编译的cpp文件的时候,还不让他用#include,也不让他写没有实现的函数声明。这种题目一般都不会多于100行,所以总是有充分的时间来写。
■网友
leetcode是练习不是考试。就好比小学练习四则运算,当然可以用计算器,但是这个练习还有意义吗?
■网友
手痒痒,来回答一下这个题,希望下周proposal和另外一件重要的事情顺利。
第一,题主的写法,面试中肯定是不让那么写的。你可以提一下各种语言里面都实现了这个方法,one line就能搞定,同时说这个可能不是考察的重点。这是面试中的暖场话,俗话叫communication。
第二,LeetCode上,咱们为了能AC,五花八门都可以写,因为没人管你。但面试中,面试官会和你交流,肯定就会说,great,你知道有现成的实现,说明你底子还不错。那现在咱们来假设这个方法不存在,你会考虑怎么解?
这个时候就是考察基本功的时候了,你就说我们可以从每个字符开始匹配,巴拉巴拉。面试官觉得你on the right track,can you implement this out? 你就写呀写,然后解决问题。当然了,大家都知道这个题的最优解是KMP,这个终极大招,劝大家别乱放,容易伤到自己。如果是面试官想看你展示这一招,据说一般都是你凶多吉少,写出来也是凉凉。
第三,说句题外的,别看二分那么”简单“,不是每个人都能秒的,大牛除外,不然,你现在拿张纸,一遍bug free试试。这个题也一样,很多时候,面试官就是想看看你会不会写代码,还真别说,不是每个人都随便秒天秒地的。
面试中,大部分人也都是一般人,能完整讲明白,写出来,能测试,就很棒,就是一个hire。当然你做到以上这些,还能给面试官讲明白KMP,并写出来,那应该是Strong Hire了。
平时练习过程中,咱们一般都忽略了交流这一块,所以很多题看起来很傻,觉得,这也能是面试题?
现实中,面试官出的题都不是那么平铺直叙的,需要大家去剖析题目,交流思路,然后再是写代码,测试。
如何看待LC28?面试题之一,如果你遇到的话,镇静一些,按照上面的步骤来吧。要不然,估计就是各种悲剧。Recap:面试四步有四步:
communication,交流。
problem solving,解决问题。
coding,写代码。
testing,测试。
以上。
■网友
对,其实也就是说字符串str2在字符串str1中第一次出现的索引而已。
Python也能通过一行`return haystack.find(needle)`实现,但是这背后具体算法,如果没有find函数具体是怎么实现的,这才是算法有意思的地方~
■网友
AC是AC了……那如果真有人问你诸如KMP算法的原理,以及除了查询substr入口位置外还可能用于什么场合的话,你要怎么回答呢?
■网友
题主一看就是圈内人,普通人刷题都是说我的答案Accepted,不会说AC
■网友
说明他的测试用例不够强大
■网友
刷Leetcode一个基本原则就是不用内置method或function。因为你最终的目的是提升编程技巧和应付面试的层层follow up。人家考的是你的思路,编程的思维。如果不用method,你甚至会发现很多easy的题目都不easy
■网友
今天回头看了一眼当时写的代码,发现自己犯了一个极其低级的错误,不怪用例太诡异,,,
当时写的时候边界条件想要写 j \u0026lt; needle.size();或者needle != \u0026#39;\\0\u0026#39;;,这两个都没问题,都可以正常运行,但是我当时脑子一抽就写成了 j \u0026lt; needle != \u0026#39;\\0\u0026#39;;于是就出现了bug。
下面是错误代码的运行结果和全部代码:
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义