美文网首页
前端面试中可能遇到的算法问题

前端面试中可能遇到的算法问题

作者: 虎帅锅 | 来源:发表于2017-08-20 15:39 被阅读70次

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

    所谓回文就是产生首尾回环的效果,叫做回文,也叫回环。比如 mnmnm abcba .

    这其实就是考察我们对reverse的应用啦!我们可以利用函数,将字符串转换成数组在用join把他转为字符串进行比较就可判断出是不是回文了。

    案例:      functionfun(str) {

                             if(str==str.split('').reverse().join('')){

                                               alert("是回文")

                                   }else{

                                             alert("不是回文")

                                     }

                              }

                             fun("mnmnm")

    2.数组去重

    数组去重就是去掉一组数组中重复的数字

    var arr = [1,1,2,2,3,3,4,4,5,6];

    (1)先创建一个新空数组。在遍历旧数组与之比较,如果没有重复的添加到新空数组

    var newArr=[];

     for(var i in arr){

     if(newArr.indexOf(arr[i])==-1){

     newArr.push(arr[i])

     }

     }

     document.write(newArr)

    (2)遍历数组俩遍,让前一位于后一位比较,有重复的删除掉

    for(var i=0;i

          for(var j=i+1;j

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

          arr.splice(j,1)

          j--

          }

          }

          }

          document.write(arr)

    3.随机生成1-100的10个元素放入数组,

       输出最大值,最大值的下标、最小值、最小值的下标、平均值和总和

     var arr=[];

    for (var i=0;i<10 ;i++ )

    {

    var sui=parseInt(Math.random()*100);

    arr[i]=sui

    }

    document.write(arr+"
    ");

    var arr1=arr[0];

    for (var j=1;j

    {

    if (arr[j]>arr1)

    {

    arr1=arr[j]

    }

    }

    document.write(arr1+"      "+arr.indexOf(arr1)+"
    ")

    var arr2=arr[0];

    for (var j=1;j

    {

    if (arr[j]

    {

    arr2=arr[j]

    }

    }

    document.write(arr2+"    "+arr.indexOf(arr2)+"
    ");

    var arr3=0;

    for (var k=0;k

    {

    arr3+=arr[k]

    }

    document.write(arr3+"    "+arr3/10)

    4.排序算法

    var a=[9,2,33,66,55,56,34,1,91,88];

    for(var i=0;i<a.lenght;i++){

    for(var j=i+1;j<a.lenght;j++){

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

    var tmp=a[i];

    a[i]=a[j]

    a[j]=tep

    }

    }

    document.write(a);

    5.统计一个字符串出现最多的字母
    var str ="zhaochucichuzuiduodezifu";

    var arr = [];//定义一个新数组

    //循环遍历字符串

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

    var index = -1;

    var j = 0;

    //找每一个字符

    do{

    index = str.indexOf(str[i], index + 1);

    if(index != -1) {

    j++;

    }

    }while(index != -1);

    arr[j] = str[i];//把字符串str中的字符赋给数组arr索引为j的数据,当多次循环后,会出现重复赋值的现象,

    //后赋值的会把之前的赋值覆盖掉,但不影响我们找出字符出现最多的那个

    }

    console.log(arr);

    console.log("最多的字符是"+ arr[arr.length - 1]);

    console.log("次数是"+ (arr.length - 1));

    6.不借助临时变量,进行两个整数的交换

      这是我常用的方法

    varfoo=1;bar=2;

    bar=[foo,foo=bar][0];

    console.log(foo);

    console.log(bar);

    以上是我自己的一点知识小结,如有不足,欢迎广大网友提意见


    相关文章

      网友评论

          本文标题:前端面试中可能遇到的算法问题

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