js的算法题

1、统计一个字符串中出现最多的字母

     给出一个字符串,统计出现次数最多的字母。如:“wqeqwhixswiqhdxsq”,其中出现最多的是q.

   js算法的实现

function findMax(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;



}

  

2、顺序算法

    a、冒泡排序

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

      for(let j=0;j<arra.length-i-1; j++){
        if (arr[i]>arr[j]){
             let tem =arr[i];
                 arr[i]=arr[j];
                  arr[j] =tem; 
          } 
        }
   } 
    return arr;
 }

    b、快速排序(快排)

function quick(arr){
if (arr.length<=1){
           return arr;
     }

    let leftArr=[];
    let rightArr=[];
    let q=arr[0];
     for(let i=1; i<arr.length;i++){
        if (arr[i]>q){
          rightArr.push(arr[i]);     
      } else{
           leftArr.push(arr[i]);
      }
    }
   return [].concat(quick(leftArr),[q],quick(rightArr));

}

6、斐波那契数列

     js的实现方法

function getFib(n){
   var fibairr =[];
   var  i=0;
   while(i<n) {
     if (i<=1){
       fibarr.push(i);
      } else{
     fibarr.push(fibarr[i-1])
        } 
    i++;
  }

  return fibarr;
}
posted @ 2018-08-02 17:11  S_ayNo  阅读(170)  评论(0编辑  收藏  举报