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; }