前端中级算法题
-
反转字符串
编写一个函数,接受一个字符串作为输入,并返回反转后的字符串。
示例:
function reverseString(str) {return str.split('').reverse().join(''); }reverseString('hello'); // 输出: 'olleh' ```
-
找出数组中的最大值
编写一个函数,接受一个数字数组作为输入,并返回数组中的最大值。
示例:
function findMax(arr) {return Math.max(...arr); }findMax([1, 3, 5, 2, 4]); // 输出: 5 ```
-
判断字符串是否为回文
编写一个函数,接受一个字符串作为输入,并判断该字符串是否是回文字符串。回文字符串是指正着读和反着读都一样的字符串。
示例:
function isPalindrome(str) {return str === str.split('').reverse().join(''); }isPalindrome('level'); // 输出: true ```
-
统计字符串中每个字符的出现次数
编写一个函数,接受一个字符串作为输入,并返回一个对象,该对象包含字符串中每个字符作为键,以及对应字符出现的次数作为值。
示例:
function countCharacters(str) {const count = {};for (let char of str) {count[char] = count[char] ? count[char] + 1 : 1;}return count; }countCharacters('hello'); // 输出: { h: 1, e: 1, l: 2, o: 1 } ```
-
判断两个字符串是否为同构
编写一个函数,接受两个字符串作为输入,并判断它们是否为同构字符串。同构字符串是指两个字符串中的字符可以被一一映射,且相同位置上的字符在两个字符串中必须相同。
示例:
function isIsomorphic(str1, str2) {if (str1.length !== str2.length) {return false;}const map1 = {};const map2 = {};for (let i = 0; i < str1.length; i++) {const char1 = str1[i];const char2 = str2[i];if ((map1[char1] && map1[char1] !== char2) || (map2[char2] && map2[char2] !== char1)) {return false;}map1[char1] = char2;map2[char2] = char1;}return true; }isIsomorphic('egg', 'add'); // 输出: true ```