算法基础

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. 字符串逆序

写一个函数,输入 int 型,返回整数逆序后的字符串。
如:输入整型 1234,返回字符串“4321”。

要求:

  1. 必须使用递归函数调用,不能用全局变量
  2. 输入函数必须只有一个参数传入
  3. 必须返回字符串
查看答案
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

# 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
更新时间: 2022-04-10 13:23