JS常见实用算法,不断更新中,欢迎大家提意见

来源:互联网 发布:滚动屏编辑软件 编辑:程序博客网 时间:2024/05/16 18:15

我叫Altaba,欢迎访问我的博客                                     时间:2017年1月13

Q1**判断一个单词或者数字是否是回文**

       很多人拿到这样的题目非常容易想到用for 将字符串颠倒字母顺序然后匹配就行了。其实重要的考察的就是对于reverse的实现。其实我们可以利用现成的函数,将字符串转换成数组,这个思路很重要,我们可以拥有更多的自由度去进行字符串的一些操作。

       /*split(“”)分割字符串,返回一个由字符串每个字符组成的数组 *

       reverse()数组方法,颠倒数组中元素的循序,返回颠倒后的数组

       *join("")数组方法,将数组元素拼接成字符串返回,拼接方式按()中传入的字符串拼接 */

      function Q1(str){

           return str.split("").reverse().join("");

      }

Q2**去掉一组整型数组重复的值** //对象["属性名"]==对象.属性名

       function Q2(arr){

          for(var i= 0,ob={},tep=[],count= 0,le=arr.length;i<le;i++){

               if(ob[arr[i]]){

                   count++;//可以省略,用途不大

               }else{

                  ob[arr[i]]=1;

                  tep.push(arr[i]);

              }

           }

           arr=tep; return arr;

      }

Q3找出一个字符串出现最多的字符,并统计个数

      function Q3(str){

           for(var i= 0,ob={},tem= "",le=str.length;i<le;i++){

               if(!ob[str[i]]){

                   ob[str[i]]=0;

               }

              ob[str[i]]++;

               if(tem==""||ob[str[i]]>ob[tem]){

                   tem=str[i];

              } }

          console.log("出现次数最多的字符是:"+tem);

           console.log("出现的次数:"+ob[tem]);

       }

Q4**排序算法冒泡排序法,选择排序法,快速排序法**

       function Q4(arr){ for(var i=0;i<arr.length-1;i++){

               for(var j=i+1;j<arr.length;j++){

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

                      var pp=arr[i];

                       arr[i]=arr[j];

                      arr[j]=pp;

                  }

              }

           }

          return arr;

       }

     **选择排序法**

       function Q44(arr){

          for(var i= 0,tmp= 0,min= 0,n= 0,le=arr.length;i<le-1;i++){

              n=i;

              min=arr[i];

              for(var j=i+1;j<le;j++){

                   if(min>arr[j]){

                      min=arr[j]; n=j;

                   }

              }

              tmp=arr[i];

              arr[i]=min;

               arr[n]=tmp;

           }

           return arr;

      }

      //快速排序法 ......

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

       function Q5(a,b){

           b=b-a;

          a=b+a;

           b=a-b;

           return[a,b];

       }

Q6**找出下列正数组的最大差值**//使用math.max和math.min方法,遍历一遍数组就可以了

       function Q6(arr){

           var min= arr[0],xxx=0;

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

               var current=arr[i];

               min=Math.min(min,current);

              var currentxxx=current-min;

               xxx=Math.max(xxx,currentxxx);

          }

          return xxx;

      }

//Q7   HTML转义字符,当字符串中有闭合标签的时候,在添加到元素中最为文本或内容的时候,最好需要转义,不然其中标签会被解析。下面在字符串原型上添加了htmlEncode()方法,直接使用就会返回转义后的字符串。
    String.prototype.htmlEncode = String.prototype.htmlEncode || function(){
            var s = "";
            if (!this) return s;

            if (this.length == 0) return "";
            s = this.replace(/&/g, "&amp;");
            s = s.replace(/</g, "&lt;");
            s = s.replace(/>/g, "&gt;");
            s = s.replace(/ /g, "&nbsp;");
            s = s.replace(/\'/g, "&#39;");
            s = s.replace(/\"/g, "&quot;");
            return s;
        };

0 0
原创粉丝点击