前端开发工程师面试题之算法篇

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 }

猜你喜欢

转载自www.cnblogs.com/wanghao123/p/9390674.html