常見js演算法題

2021-09-24 06:41:41 字數 2887 閱讀 4090

/*

* @author: laifeipeng

* @date: 2019-02-21 17:50:13

* @last modified by: laifeipeng

* @last modified time: 2019-02-21 18:12:27

*/// 1、判斷回文字串

// 法一

function

palindrome(str)

return rst === str;

}// 法二

function

palindrome2(str)

} return

true;

}// 2、翻轉字串

function

reversestring(str)

// 3、生成指定長度隨機字串

function

randomstring(n)

return rst;

}function

randomstring2(n) , () => str.charat(math.round(math.random() * str.length)));

return arr.join('');

}// 4、統計字串中次數最多字母

function

findmaxduplicatechar(str)

const charobj = {};

for (let i = 0; i < str.length; i++) else

} let maxchar = '';

let maxvalue = 1;

for (const k in charobj)

} return maxchar + ':' + maxvalue;

}function

findmaxduplicatechar(str)

const strarr = [...str];

const charobj = {};

let maxchar = '';

let maxvalue = 0;

strarr.foreach(c =>

})return maxchar + ':' + maxvalue;

}// 5、陣列中最大差值

function

getmaxdiff(arr)

return max - min;

}function

getmaxdiff(arr) )

return max - min;

}function

getmaxdiff(arr)

// 6、陣列去重

// 6.1 filter

function

unique(arr) )

}// 6.2 set

function

unique(arr)

// 7、階乘

// 非遞迴實現

function

factorialize(num)

return rst;

}// 遞迴實現

function

factorialize(num)

// 8、二分查詢(原陣列必須有序,否則不行)

// 下面的實現是針對公升序陣列的

// 非遞迴實現

function

binary_search(arr, target) else

if (target > arr[mid]) else

if (target < arr[mid])

} return

-1;}

// 遞迴實現

function

binary_search2(arr, target) else

if (target > arr[mid]) else

if (target < arr[mid])

} return search(arr, 0, arr.length - 1, target)

}複製**

/*

* @author: laifeipeng

* @date: 2019-02-20 17:36:01

* @last modified by: laifeipeng

* @last modified time: 2019-02-22 12:19:27

*/// 給乙個陣列(其元素不重複),求所有元素相加為某個值的2個元素對的下標對

// eg: [2, 9, 3, 10, 8, 1, 22] 目標值11,有[[0, 1], [2, 4], [3, 5]]

// 本人的實現不僅找出下標組,把對應的元素組也一起返回了,提高函式功能,誰知道後面會不會更改需求呢

function

findnum(arr, target) else

if (a[i] + a[j] > target) else

} // 如果只要下標組,則:return key;

return

}// 上面的演算法實現需要排序陣列,下面介紹乙個不用排序的演算法

function

findnum2(arr, target)

} // 如果只要下標組,則:return key;

return

}// 下面是測試

const arr = [2, 9, 3, 10, 8, 1, 22];

const target = 11;

console.log(findnum(arr, target))

console.log(findnum2(arr, target))

// 複製**

JS面試常見演算法題

學習資料結構與演算法對於工程師去理解和分析問題都是有幫助的。如果將來當我們面對較為複雜的問題,這些基礎知識的積累可以幫助我們更好的優化解決思路。下面羅列在前端面試中經常撞見的幾個問題吧。1.統計乙個字串出現最多的字母和出現的次數 第一種方法 var str abcdeddd var n for va...

JS面試常見演算法題

1.統計乙個字串出現最多的字母和出現的次數 第一種方法 var str abcdeddd var n for var i 0 i str.length i else console.log n var max 0 var maxchar null for var key in n var mores...

js常見演算法題(一)

1.每個單詞手字母大寫 var capitalizeeveryword str str.replace b a z g,char char.touppercase capitalizeeveryword hello world 複製 2.計算平均數 var calculatedmean arr ar...