网上看到有人也说是他遇到的一道笔试题,那我想这道题目其实还考过很多人。只不过当时是给我笔让我写出来,一下子懵住了,没缓过神来。写的算法时间复杂度为O(n*m),而出题的要求是时间复杂度控制在O(n+m),而且内存和CPU要控制的很小。
已经快一年了,只记得题目的大意是:两个很多的字符串A、B(全部小写字母),请找出A中有,而B中没有的?
如果是用纸写出来,我想思考后也能写出来,而如果只是说(一般最多说一次,实在不理解最多再重复一次,还不能理解,别人可能会认为你理解和沟通上有障碍了)其实还挺考一个人的理解能力和反应能力。
记得我当时是提笔就写,得到的回答是问:是说还能不能继续优化?然后又改了改,同样又问,能不能继续优化。其实这道题并不难,重点是要理解出题的本意,找到最高效的方法,后来要想好后手机(最多140个字符)发给他。
题目有两个信息已经透露出来了:
1、对于比较字符串,尽量避免二次或以上的循环(消耗时间),出这道题希望给出的代码只有一次循环;
2、全部都是小定字母,而小写字母最多只有26个(a-z);
当时直接在手机上写的,代码也不见了,刚自己又写了一遍:
'\n string is : ' + rstStr);
</script>
</body>
</html>
</script>
</body>
</html>
在线运行代码: