前端开发工程师面试题之算法篇
Posted wanghao123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端开发工程师面试题之算法篇相关的知识,希望对你有一定的参考价值。
1.判断一个单词是否是回文
注解:回文是指把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环。比如 mamam redivider .
1 function checkPalindrom(str) { 2 return str == str.split(‘‘).reverse().join(‘‘); 3 }
2.去掉一组整形数组中重复的值
注解:输入:[1, 2, 3, 1, 2],输出:[1, 2, 3]
方法很多,列车两个比较典型的
方法一:
1 function uniqueArray(arr) { 2 return arr.filter(function(item, index, array){ 3 return array.indexOf(item, index+1) === -1 4 }) 5 }
方法二:
1 function uniqueArray(arr) { 2 return Array.from(new Set(arr)); 3 }
3.统计一个字符串出现最多的字母
注解:给出一段英文连续的英文字符窜,找出重复出现次数最多的字母
1 String.prototype.findMostCharInString = function () { 2 var str = this.valueOf(); 3 var obj = {}; 4 for (var i = 0; i < str.length; i++) { 5 var char = str.charAt(i); 6 if (obj[char]) { 7 obj[char]++; 8 }else{ 9 obj[char] = 1; 10 } 11 } 12 var max = 0; 13 var maxChar = null; 14 for (var key in obj) { 15 if (max < obj[key]) { 16 max = obj[key]; 17 maxChar = key; 18 } 19 } 20 return maxChar; 21 }
4.排序算法
冒泡排序
1 function bubbleSort(arr){ 2 var len = arr.length; 3 for (var i = 0; i < len; i++) { 4 for (var j = 0; j < len -1 - i; j++){ 5 if (arr[j] > arr[j+1]) { 6 var temp = arr[j]; 7 arr[j] = arr[j+1]; 8 arr[j+1] = temp; 9 } 10 } 11 } 12 return arr; 13 }
选择排序
1 function selectionSort(arr){ 2 var len = arr.length; 3 var minTemp,temp; 4 for (var i = 0; i < len-1; i++){ 5 minTemp = i; 6 for (var j = i + 1; j < len; j++){ 7 8 if (arr[j] < arr[minTemp]) { 9 minTemp = j; 10 } 11 } 12 temp = arr[i]; 13 arr[i] = arr[minTemp]; 14 arr[minTemp] = temp; 15 } 16 17 return arr; 18 }
以上是关于前端开发工程师面试题之算法篇的主要内容,如果未能解决你的问题,请参考以下文章