數據結構和算法正則表達式
注意:使用typeof的時候,必定是在後面的類型上加引號,不然會出錯。算法
codewars數組
1.使用XO()函數判斷一個字符串中x和o的數量是否相等,相等則返回true,不然返回false。且忽略大小寫。數據結構
方法一:數據結構和算法
(str.match(/x/ig).length == str.match(/o/
注意:1.匹配正則表達式時,ig表示忽略大小寫且在全局中匹配,不然只會返回第一個匹配的字符串;ide
2.match()方法,若是匹配成功,則返回一個數組;若是匹配不成功,則返回null。函數
3.可是若是不存在o或着x,那麼該方法將報錯,由於null沒有length屬性,討論將會複雜。spa
方法二:3d
View Codecode
首先將字符串使用split()方法轉化成數組,而後遍歷,若是等於O,則j加,若是等於x,則k加1;最後判斷是否相等,這種方法也很是棒。
2.DNA鏈條 A和T互補 C和G互補,輸入字符串ATCG應當輸出TAGC,以下:
View Code
注意:必定要continue,不然會出現問題。另外能夠發現:處理字符串時,先轉化爲數組每每有好的效果,由於能夠遍歷。
3.判斷一個數是不是 square number,方法以下:
View Code
4.給你m塊磚搭建一個房子,最底層爲n的三次方塊轉,第二層爲(n-1)的三次方...最上面爲1塊磚,而後給你一個m,去判斷是否存在這樣的一個n,有則輸出n,沒有則輸出-1.
View Code
5. 刪除一個數組中冗餘的項。
View Code
6.給一個字符串,返回中間兩個數
View Code
7. (好題)判斷輸入一個整數返回的乘積次數。
View Code
8. 智商檢測---從偶數中找奇數,從奇數中找偶數
View Code
9. 找出全部的除數
View Code
第二部分: 常見題
function foo(n) { var i = 1; while (i < = n) { i *= 2; } }
這個函數的時間複雜度是多少?
時間複雜度即根據不一樣的輸入(這裏是n),那麼程序的語句執行的次數就能夠理解爲時間複雜度。
這裏每執行一次,i爲2x ,每執行一次,x就會增長1, 可見當2x = n 時, 程序執行完畢,那麼x爲log n ,因而程序的複雜度爲 O(logn)
斐波那契數列的時間複雜度是多少?
斐波那契數列f(0)開始,第0項是0,第1項是1,後面的每一項是前面兩項之和,最易理解的是遞歸形式。那麼它的時間複雜度是多少呢?
function fibbnaqi(n) { if (n <= 1) { return n; } else { return fibbnaqi(n - 1)+fibbnaqi(n - 2); } } function log(n) { console.log(fibbnaqi(n)); } log(0); // 0在斐波那契數列中有f(0)這一項,因此從0開始 log(1); // 1 log(2); // 1 log(3); // 2 log(4); // 3