javascript的一些常用算法

来源:互联网 发布:山东工商学院网络党课 编辑:程序博客网 时间:2024/05/17 02:48

1: 判断一个单词是否是回文?


回文是指把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环。其实重要的考察的就是对于reverse的实现。其实我们可以利用现成的函数,将字符串转换成数组,这个思路很重要,我们可以拥有更多的自由度去进行字符串的一些操作。


function checkPalindrom(str) {  

    return str == str.split('').reverse().join('');

}


2: 去掉一组整型数组重复的值


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

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

 主要考察个人对Object的使用,利用key来进行筛选。


/**

* unique an array

**/

let unique = function(arr) {  

  let hashTable = {};

  let data = [];

  for(let i=0,l=arr.length;i<l;i++) {

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

      hashTable[arr[i]] = true;

      data.push(arr[i]);

    }

  }

  return data

 

}

 

module.exports = unique;


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


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

输入 : afjghdfraaaasdenas 

输出 : a

这里需要是统计重复次数。


function findMaxDuplicateChar(str) {  

  if(str.length == 1) {

    return str;

  }

  let charObj = {};

  for(let i=0;i<str.length;i++) {

    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;


4: 排序算法


4.1:冒泡排序算法就是依次比较大小,小的的大的进行位置上的交换。


function bubbleSort(arr) {  

    for(let i = 0,l=arr.length;i<l-1;i++) {

        for(let j = i+1;j<l;j++) {

          if(arr[i]>arr[j]) {

                let tem = arr[i];

                arr[i] = arr[j];

                arr[j] = tem;

            }

        }

    }

    return arr;

}

module.exports = bubbleSort;

4.2:快速排序

function quickSort(arr) {

 

    if(arr.length<=1) {

        return arr;

    }

 

    let leftArr = [];

    let rightArr = [];

    let q = arr[0];

    for(let i = 1,l=arr.length; i<l; i++) {

        if(arr[i]>q) {

            rightArr.push(arr[i]);

        }else{

            leftArr.push(arr[i]);

        }

    }

 

    return [].concat(quickSort(leftArr),[q],quickSort(rightArr));

}

 

module.exports = quickSort;

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


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

比如给定 长度 8  输出 4ldkfg9j


function randomString(n) {  

  let str = 'abcdefghijklmnopqrstuvwxyz9876543210';

  let tmp = '',

      i = 0,

      l = str.length;

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

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

  }

  return tmp;

}

 

module.exports = randomString;