網上看到有人也說是他遇到的一道筆試題,那我想這道題目其實還考過很多人。隻不過當時是給我筆讓我寫出來,一下子懵住了,沒緩過神來。寫的算法時間複雜度為O(n*m),而出題的要求是時間複雜度控制在O(n+m),而且記憶體和CPU要控制的很小。
已經快一年了,隻記得題目的大意是:兩個很多的字元串A、B(全部小寫字母),請找出A中有,而B中沒有的?
如果是用紙寫出來,我想思考後也能寫出來,而如果隻是說(一般最多說一次,實在不了解最多再重複一次,還不能了解,别人可能會認為你了解和溝通上有障礙了)其實還挺考一個人的了解能力和反應能力。
記得我當時是提筆就寫,得到的回答是問:是說還能不能繼續優化?然後又改了改,同樣又問,能不能繼續優化。其實這道題并不難,重點是要了解出題的本意,找到最高效的方法,後來要想好後手機(最多140個字元)發給他。
題目有兩個資訊已經透露出來了:
1、對于比較字元串,盡量避免二次或以上的循環(消耗時間),出這道題希望給出的代碼隻有一次循環;
2、全部都是小定字母,而小寫字母最多隻有26個(a-z);
當時直接在手機上寫的,代碼也不見了,剛自己又寫了一遍:
線上運作代碼:
new document