美文网首页
面试常见算法题

面试常见算法题

作者: 孙雪冬 | 来源:发表于2017-05-03 16:06 被阅读70次

    1.对象转换为数组

    var obj={
      0:'我',
      1:'的',
      2:'妈',
      3:'呀',
      length:4
    }
    //obj格式必须是类似数组的格式(键值是索引,具有length属性)
    var _slice=[].slice;
    var objArr=_slice.call(obj);
    

    2.统计一个字符串出现最多的字母

    function countMost(str) {
      const objCount = {};
      str = str.split('').sort().join('');
      for(let i=0; i<str.length; i++) {
        let lastIndex = str.lastIndexOf(str[i]);
        num = lastIndex - i + 1;
        objCount[str[i]] = num;
        i = lastIndex;
      }
      let maxStr = [],
          maxValue = 1;
      for(let p in objCount) {
        if(objCount[p] > maxValue) {
          maxStr = [];
          maxStr.push(p);
          maxValue = objCount[p];
        }else if(objCount[p] == maxValue){
          maxStr.push(p);
        }
      }
      return maxStr.length == 1? maxStr[0] : maxStr;
    }
    console.log(countMost('afjghdfffffraaaasdddddenas'));
    

    3.找出下列正数组的最大差值

    const arr = [10,5,11,7,8,9];
    function getMaxProfit(arr) {
      let max = arr[0],
          min = arr[0];
      for(let i=1; i<arr.length; i++) {
        max = Math.max(max,arr[i]);
        min = Math.min(min,arr[i]);
      }
      return max - min;
    }
    console.log(getMaxProfit(arr));
    

    4.获取数组中最大或者最小值

    function maxAndMin(arr){
      return {
        max:Math.max.apply(null,arr.join(',').split(',')),
        min:Math.min.apply(null,arr.join(',').split(','))
      }
    }
    var arr = [22,0,[3,4,2,55]];
    maxAndMin(arr).max;// 55
    maxAndMin(arr).min;// 0
    

    5.生成指定长度的随机字母数字字符串

    function getRandomStr(len) {
      var str = "";
      for( ; str.length < len; str += Math.random().toString(36).substr(2));
      return str.substr(0, len);
    }
    

    相关文章

      网友评论

          本文标题:面试常见算法题

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