時間過得很快,轉行做開發整一年了,打算出去見見世面。看我現在技術水平能達到什么層次,好確定以后的學習方向,也看看外面的公司都在使用一些什么樣的技術。
昨天面了一家公司,對方直接讓我答的壓軸題。一個簡單的算法設計題:熟悉js的同學知道js中字符串有個indexOf方法,現在需要實現數組的indexOf方法。由於本科並非計算機專業,編程方面的一些基本功還很不扎實(比如基礎算法掌握程度、算法設計能力),昨天沒把題目做對。今天趕緊寫出來,以免以后遇上還得再去想。羅里吧嗦一頓,上代碼吧還是:
1 Array.prototype.indexOf = function(b) { 2 //參數校驗 3 if (Object.prototype.toString.call(b) !== '[object Array]') return new Error('array expected'); 4 //b的長度比本數組長度長了就直接返回 5 if (this.length < b.length) return -1; 6 7 var index = 0, //本數組游標 8 i = 0, 9 len = b.length; 10 while (index < this.length) { 11 if (this.length - index < b.length) return -1; 12 for (i = 0; i < len; ++i) { 13 if (this[index + i] !== b[i]) break; 14 } 15 if (i === b.length) return index; 16 index++; 17 } 18 }
其實還有個偷雞摸狗的辦法:
1 Array.prototype.indexOf = function(b) { 2 if (Object.prototype.toString.call(b) !== '[object Array]') return new Error('array expected'); 3 return this.join('').indexOf(b.join('')); 4 }