zoukankan      html  css  js  c++  java
  • 前端会遇到的算法

    1.判断一个单词是否是回文(比如 mamam、redivider)
    function checkPalindrom(str) {  
        return str == str.split('').reverse().join('');
    }
    console.log(checkPalindrom('mamam'));  //true
    console.log(checkPalindrom('guojing'));  //false
    2.去掉一整型数组重复的值
    比如输入: [1,13,24,11,11,14,1,2] 
    输出: [1,13,24,11,14,2]
    考察对Object的使用,利用key来进行筛选
    const 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.排序算法
    动画演示地址:http://math.hws.edu/eck/jsdemo/sortlab.html
    function mySort(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 = mySort;
    5.不借助临时变量,进行两个整数的交换
    输入 a = 2, b = 4 
    输出 a = 4, b =2
    {
      b = b-a;
      a = b+a;
      b = a-b;          
    }

    斐波那契数列的曲线:0、1、1、2、3、5、8、13、21、34、……

    6.使用canvas 绘制一个有限度的斐波那契数列的曲线
    https://codepen.io/Jack_Pu/pen/LRaxZB
    function getFibonacci(n) {  
        var fibarr = [];
        var i = 0;
        while(i<n) {
            if(i<=1) {
                fibarr.push(i);
            }else {
                fibarr.push(fibarr[i-1] + fibarr[i-2])
            }
            i++;
        }
        return fibarr;
    }

    参考:

    http://web.jobbole.com/88471/

    http://math.hws.edu/eck/jsdemo/sortlab.html(排序算法演示)

    https://codepen.io/Jack_Pu/pen/LRaxZB(canvas绘制曲线)

    工欲善其事 必先利其器
  • 相关阅读:
    Chromium GN构建工具的使用
    cef 不更新编译
    Debugging SSL on Linux
    chromium url 请求流程
    mim
    qt打包发布问题 缺失qt动态库
    qmake生成pro的make总失败。但是qt creator里面是好的
    qt 与 x11 头文件同时引用
    Ubuntu16安装GTK+2.0教程
    gcc编译静态库到自己的程序 解决在不同linux下因libc版本问题而不能运行 版本兼容问题
  • 原文地址:https://www.cnblogs.com/fengyouqi/p/9571097.html
Copyright © 2011-2022 走看看