js中常见的算法问题


Q1 去掉一组整型数组重复的值

比如输入: [1,13,24,11,11,14,1,2] 

输出: [1,13,24,11,14,2]

需要去掉重复的11 和 1 这两个元素。

/**

* unique an array

**/

let unique = function(arr) {  

     let hashTable = {};

     let data = [];

     for(let 0arr.lengthli++) {

     if (!hashTable[arr[i]]) {

          hashTable[arr[i]] = true;

          data.push(arr[i]);

     }

  }

  return data

}

 

module.exports = unique;

 

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

给出一段英文连续的英文字符窜,找出重复出现次数最多的字母


前面出现过去重的算法,这里需要是统计重复次数。
输入 : afjghdfraaaasdenas 

输出 : a

 

function findMaxDuplicateChar(str) {  

  if(str.length == 1) {

    return str;

  }

  let charObj = {};

  for(let 0;str.lengthi++) {

    if(!charObj[str.charAt(i)]) {

      charObj[str.charAt(i)] = 1;

    }else{

      charObj[str.charAt(i)] += 1;

    }

  }

  let maxChar = '',

      maxValue = 1;

  for(var k in charObj) {

    if(charObj[k] >= maxValue) {

      maxChar = k;

      maxValue = charObj[k];

    }

  }

  return maxChar;

}

module.exports = findMaxDuplicateChar;

 

Q3 随机生成指定长度的字符串

实现一个算法,随机生成指制定长度的字符窜。

比如给定 长度 8  输出 4ldkfg9j

 

function randomString(n) {  

  let str = 'abcdefghijklmnopqrstuvwxyz9876543210';

  let tmp = '',

      i = 0,

      l = str.length + 1;

  for (i = 0; i < n; i++) {

    tmp += str.charAt(Math.floor(Math.random() * l));

  }

  return tmp;

}

 

module.exports = randomString;

 

posted @ 2018-01-14 23:23  潇洒的蚂蚁  阅读(226)  评论(0编辑  收藏  举报