算法基础
狐七 3/23/2022 算法
# 1. 从长度为n的字符串S中,查找长度为m的字符串T
从长度为n的字符串S中,查找是否存在长度为m的字符串T,
如果存在返回对应的位置,不存在返回-1
查看答案
const find = (S, T) => {
if (S.length < T.length) return -1
for (let i = 0; i < S.length; i++) {
if (S.slice(i, i + T.length) === T) return i
}
return -1
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 2. 字符串逆序
写一个函数,输入 int 型,返回整数逆序后的字符串。
如:输入整型 1234,返回字符串“4321”。
要求:
- 必须使用递归函数调用,不能用全局变量
- 输入函数必须只有一个参数传入
- 必须返回字符串
查看答案
function fun(num) {
num = Number(num)
let num1 = Math.floor(num / 10);
let num2 = num % 10;
if (num1 < 1) {
return String(num);
} else {
return `${num2}${fun(num1)}`;
}
}
var a = fun(12345);
console.log(a);
console.log(typeof a);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 3. 二分查找
二分查找主要建立在有序数组中。
let arr = [1,2,3,4,5,6,7,8]
找到6的索引并返回,如果没有找到返回 -1
查看答案
function find(arr, item) {
let start = 0
let end = arr.length - 1
let key
while(true) {
key = Math.floor((start + end) / 2)
if (start > end) return - 1
if (arr[key] === item) {
return key
}else if (arr[key] > item) {
end = key - 1
}else if (arr[key] < item) {
start = key + 1
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17