前端開發工程師面試題之演算法篇
1.判斷一個單詞是否是迴文
註解:迴文是指把相同的詞彙或句子,在下文中調換位置或顛倒過來,產生首尾迴環的情趣,叫做迴文,也叫回環。比如 mamam redivider .
1 function checkPalindrom(str) { 2return str == str.split('').reverse().join(''); 3 }
2.去掉一組整形陣列中重複的值
註解:輸入:[1, 2, 3, 1, 2],輸出:[1, 2, 3]
方法很多,列車兩個比較典型的
方法一:
1 function uniqueArray(arr) { 2return arr.filter(function(item, index, array){ 3return array.indexOf(item, index+1) === -1 4}) 5 }
方法二:
1 function uniqueArray(arr) { 2return Array.from(new Set(arr)); 3 }
3.統計一個字串出現最多的字母
註解:給出一段英文連續的英文字元竄,找出重複出現次數最多的字母
1 String.prototype.findMostCharInString = function () { 2var str = this.valueOf(); 3var obj = {}; 4for (var i = 0; i < str.length; i++) { 5var char = str.charAt(i); 6if (obj[char]) { 7obj[char]++; 8}else{ 9obj[char] = 1; 10} 11} 12var max = 0; 13var maxChar = null; 14for (var key in obj) { 15if (max < obj[key]) { 16max = obj[key]; 17maxChar = key; 18} 19} 20return maxChar; 21 }
4.排序演算法
氣泡排序
1 function bubbleSort(arr){ 2var len = arr.length; 3for (var i = 0; i < len; i++) { 4for (var j = 0; j < len -1 - i; j++){ 5if (arr[j] > arr[j+1]) { 6var temp = arr[j]; 7arr[j] = arr[j+1]; 8arr[j+1] = temp; 9} 10} 11} 12return arr; 13 }
選擇排序
1 function selectionSort(arr){ 2var len = arr.length; 3var minTemp,temp; 4for (var i = 0; i < len-1; i++){ 5minTemp = i; 6for (var j = i + 1; j < len; j++){ 7 8if (arr[j] < arr[minTemp]) { 9minTemp = j; 10} 11} 12temp = arr[i]; 13arr[i] = arr[minTemp]; 14arr[minTemp] = temp; 15} 16 17return arr; 18 }