1. 反转字符串

    function reverseString(str) {
        return str.split('').reverse().join('');
    }
    console.log(reverseString("hello")); // "olleh"

  2. 判断是否是回文

    function isPalindrome(str) {
        const reversed = str.split('').reverse().join('');
        return str === reversed;
    }
    console.log(isPalindrome("racecar")); // true
    console.log(isPalindrome("hello")); // false

  3. 斐波那契数列

    function fibonacci(n) {
        if (n <= 1) return n;
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
    console.log(fibonacci(6)); // 8

    4.计算阶乘

    function factorial(n) {
        if (n === 0) return 1;
        return n * factorial(n - 1);
    }
    console.log(factorial(5)); // 120

    5.数组去重

    function uniqueArray(arr) {
        return [...new Set(arr)];
    }
    console.log(uniqueArray([1, 2, 2, 3, 4, 4])); // [1, 2, 3, 4]
    

    6.合并两个有序数组

    function mergeSortedArrays(arr1, arr2) {
        let merged = [];
        let i = 0, j = 0;
        while (i < arr1.length && j < arr2.length) {
            if (arr1[i] < arr2[j]) {
                merged.push(arr1[i]);
                i++;
            } else {
                merged.push(arr2[j]);
                j++;
            }
        }
        return merged.concat(arr1.slice(i)).concat(arr2.slice(j));
    }
    console.log(mergeSortedArrays([1, 3, 5], [2, 4, 6])); // [1, 2, 3, 4, 5, 6]

    7.求数组的最大值

    function maxArray(arr) {
        return Math.max(...arr);
    }
    console.log(maxArray([1, 2, 3, 4, 5])); // 5
    

    8.斐波那契数列(非递归版)

    function fibonacciIterative(n) {
        let a = 0, b = 1, temp;
        while (n >= 1) {
            temp = a;
            a = b;
            b = temp + b;
            n--;
        }
        return a;
    }
    console.log(fibonacciIterative(6)); // 8

    9.实现一个深拷贝

    function deepClone(obj) {
        return JSON.parse(JSON.stringify(obj));
    }
    const obj = { a: 1, b: { c: 2 } };
    const clone = deepClone(obj);
    console.log(clone); // { a: 1, b: { c: 2 } }

    10.字符串内字符出现频率统计

    function charFrequency(str) {
        const frequency = {};
        for (let char of str) {
            frequency[char] = (frequency[char] || 0) + 1;
        }
        return frequency;
    }
    console.log(charFrequency("hello world")); // { h: 1, e: 1, l: 3, o: 2, ' ': 1, w: 1, r: 1, d: 1 }

    这些题目涵盖了字符串操作、数组处理、递归与迭代、对象深拷贝等常见算法和数据结构操作,适合用于JavaScript算法面试。

更多推荐