每日算法

1. 判断一个数是否为素数

Math.pow(N, 2)< n < Math.pow(N+1, 2)

1
2
3
4
5
6
7
8
9
10
11
12
function is_Prime(n) {
if (n <= 0) return false;
let N = Math.floor(Math.sqrt(n));
let is_prime = true;
for(let i = 0; i <= N; i++) {
if (n % i === 0) {
is_prime = false;
break;
}
}
return is_prime;
}

2. 是否有对应的括号, [[]] 返回true, [(()] 返回false;

用栈的数据结构去解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function is_balance(str) {
let [first, ...others] = str;
let arr = [first];
if (others.length === 0) return false;
for(let i = 0; i < others.length; i++) {
if (match(arr[arr.length - 1], others[i])) {
arr.pop();
} else {
arr.push(others[i]);
}
}
return arr.length === 0;
function match(m, n) {
return (m === '[' && n === ']') || (m === '(' && n === ')')
}
}

3. 输入 3[a]2[b]2[c], 输出 aaabbcc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function printStr(str) {
let [first, ...others] = str;
let arr = [first];
let temp = '';
for (let i = 0; i < others.length; i++) {
if (/\w/.test(others[i]) || /\d/.test(others[i])) {
arr.push(others[i]);
}
}
for (let m = 0; m < arr.length; m++) {
if (/\d/.test(arr[m])) {
temp = temp + printLetter(arr[m], arr[m + 1]);
}
}
return temp;
function printLetter(num, letter) {
var s = '';
for (let j = 0; j < num; j++) {
s = s + letter;
};
return s;
}
}

4. 多维数组 转 一维数组 数组中有3则删除,有两个3,将数组清空

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

var tempArr = [];
function flattenPlus(arr) {
var i = 0;
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
flattenPlus(arr[i]);
} else if (arr[i] === 3){
i++;
if (i >= 2) {
tempArr.push([]);
break;
}
} else {
tempArr.push(arr[i]);
}
}
}

5. apply 或者 call 实现bind

1
2
3
4
5
6
7
8
Function.prototype.bind = function(context) {
var self = this;
// 去掉第一个参数后的所有参数,因为第一个参数传的是context
var args = [].slice.call(arguments, 1);
return function() {
return self.apply(context, args.concat([].slice.call(arguments)));
}
}
如果觉得对您有帮助,就支持一下吧~
0%