数据结构和算法正则表达式
注意:使用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