美文网首页Javascript收集js基础知识总结
js开发 面试常考基础算法题

js开发 面试常考基础算法题

作者: 空无一码 | 来源:发表于2018-10-07 19:56 被阅读47次

js 开发面试常考基础算法题

1 不需要借助第三个临时变量,实现两个变量的交换

function swap(a,b){
  b = b - a;
  a = a + b;
  b = a - b;
  return [a,b];
}

2 确保字符串的每个单词首字母都大写,其余部分小写

function titleCase(str) {
  var lstr = str.toLowerCase().split(' ');
  for(var i = 0 ; i < lstr.length; i++) {
    lstr[i] = lstr[i][0].toUpperCase() + lstr[i].substring(1, lstr[i].length);
  }
  var res = lstr.join(' ');
  return res;
}
titleCase("good night"); // Good Night

3 找出正整数 数组的最大差值

function getMaxPro(arr){
  var min = arr[0];
  var max = 0;
  for (var i=0;i<arr.length;i++){
    var current = arr[i];
    min = Math.min(min, current);
    var res = currenr - min;
    max = Math.max(max, res);
  }
  return max;  
}

4 清除字符串前后的空格(兼容所有浏览器)

function trim(str) {
  if (str & typeof str === "string") {
    return str.replace(/(^s*)|(s*)$/g, ''); //去除前后空白符
  }
}

5 去掉一组整型数组中重复的值

let unique =  function(arr){
  let hash={};
  let data=[];
  for (let i=0;i < arr.length; i++){
    if (!hash[arr[i]])  {
      hash[arr[i]] = true;
      data.push(arr[i]);
    }      
  }
  return data
}

6 翻转字符串

  • split()字符串转成数组;
  • reverse()翻转数组;
  • join()数组转化成字符串。
function reverseString(str){    
  return str.split('').reverse().join('');  
}

7 找到提供的句子中最长的单词,并计算它的长度。

  • 转化成数组;
  • 根据元素长度排序;
  • 输出最长元素并返回长度。
function findLongestString(str){
  var arr = str.split(' '); 
  var arrSort = arr.sort(function (a,b) {      
    return b.length - a.length;
  });
  return [arrSort[0], arrSort[0].length];
}

8 截断一个字符串,如果字符串的长度比指定的参数num长,则把多余的部分用...来表示

function truncate(str, num){
  var trStr = str.slice(0, num);
  if (trStr.length > num) {                 
    return trStr.concat('...');
  } else {
    return str;
  }
}

9 判断一个字符串中出现次数最多的字符,统计这个次数

funcion findMaxStrCount(str) {
  var countObj = {};
  var max = '';
  for(var i = 0; i < str.length; i++) {
    var cur = str[i];
    if(!countObj[cur]) {
      countObj[cur] = 0;
    } 
    countObj[cur]++;
    if(max === '' || countObj[cur] > countObj[max]) { max = cur; }
  }
  return [max, countObj[max]];
}

10 快速排序(Quick Sort)

快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:

var quickSort = function(arr) {
 if (arr.length <= 1) { return arr; }
 var pivotIndex = Math.floor(arr.length / 2);
 var pivot = arr.splice(pivotIndex, 1)[0];
 var left = [];
 var right = [];
 for (var i = 0; i < arr.length; i++){
  if (arr[i] < pivot) {
   left.push(arr[i]);
  } else {
   right.push(arr[i]);
  }
 }
 return quickSort(left).concat([pivot], quickSort(right));
};

相关文章

  • js开发 面试常考基础算法题

    js 开发面试常考基础算法题 1 不需要借助第三个临时变量,实现两个变量的交换 2 确保字符串的每个单词首字母都大...

  • 字节跳动面试必问:海量算法高频面试题精编解析(深度好文,值得收藏

    常考面试算法题类型总结 结合2019春招和秋招真题,以下几类算法题最常考,汇总了一下: 一、暴力枚举 好多鱼! D...

  • 排序算法

    前言: 排序算法是面试经常考的题,游戏开发对算法是非常看重的,不说你了解所有算法,但是基本的排序算法是必须掌握的基...

  • js常考算法

    1. 一个数组,有2n个元素,其中有个数字重复出现了n次。其他n个数字都是不相同的。 空间复杂度O(1)。时间复...

  • 「Java面试必会」冒泡排序

    很多同学面试Java开发岗位都会遇到考算法的题,虽然考察Java开发的主要是对Java相关知识的掌握程度,但是作为...

  • 8.12网易前端笔试感想(编程部分)

    今天下午参加了网易前端笔试,选择题考了算法,数据结构还有JS有关知识,题目难度相对基础,算是很幸运的,编程题三道,...

  • Android知识点(自己用)

    整理的知识点有 Java、Android SDK、Android 源码、常见面试算法题、其他的一些计算机基础以及常...

  • 阿里栈

    -> 项目介绍 * 要有特色,抓住面试 -> 算法(这次电话面试未考,现场面试应该会随时考) * 基础数据结构要会...

  • 面试常考的算法

    有感于最近数据结构的难度越来越大,觉得先面试应付要紧,于是这边先写了几个关于面试要用的算法 第一个是判断是不是质数...

  • JavaScript面试笔试题

    JavaScript前端面试 系列文章: HTML及HTTP面试笔试题CSS面试笔试题 JS一些算法题: FE-i...

网友评论

    本文标题:js开发 面试常考基础算法题

    本文链接:https://www.haomeiwen.com/subject/dhhraftx.html