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.不需要借助第三个临时变量,实现两个变量的交换
js实现方法:
function swap(a,b){
b=b-a;
a=a+b;
b=a-b;
return [a,b];
}
3.斐波那契数列
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;
}
4.找出下列正整数组的最大差值,输入的数组是[10,5,11,7,8,9],输出 6
js的实现方法:
function getMaxPro(arr){
var minPrice=arr[0];
var maxProfit=0;
for (var i=0;i<arr.length;i++){
var currentPrice=arr[i];
minPrice=Math.min(minPrice,currentPrice);
var potentialProfit =currenrPrice-minPrice;
maxProfit=Math.max(maxProfit,potentialProfit);
}
return maxProfit;
}
5.随机生成指定长度的字符串,比如指定的长度为8
js的实现方法:
function random(n){
let str=‘abcdefghijkmnopqrstuvwxyz9876543210’;
let tmp=’’,
i=0,
l=str.length;
for(i=0;i<n;i++){
tmp +=str.charAt(Math.floor(Math.random()l))
}
return tmp;
}
6.确保字符串的每个单词首字母都大写,其余部分小写。
js的实现方法:
function titleCase(str) {
var astr=str.toLowerCase().split(" “);
for(var i=0 ; i<astr.length; i++){
astr[i]=astr[i][0].toUpperCase()+astr[i].substring(1,astr[i].length);
}
var string=astr.join(” ");
return string;
}
titleCase(“I’m a little tea pot”);
7.计算一个整数的阶乘
例子(如果用字母n来代表一个整数,阶乘代表着所有小于或等于n的整数的乘积。阶乘通常简写成 n! ; 例如: 5! = 1 * 2 * 3 * 4 * 5 = 120)
js的实现方法:
function factorialize(num) {
if(num<1){
return 1;
}else{
return num
factorialize(num-1);
}
}
factorialize(5);
8.排序
一般都是给个数组然后排序,有的从小到大,有的从大到小。一定要看清楚。以下都是从小到大的排序算法。
(1).冒泡法
var arr = [3,6,1,2,5];
var temp;
for(var i= 0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i] > arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr);
(2).快速排序法
function quicksort (arr){
if(arr.length<=1){
return arr;
}
var left = [];
var right = [];
var middle = arr[0];
for(var i=1;i<arr.length;i++){
if(arr[i]<middle){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
return quicksort(left).concat([middle],quicksort(right));
}
9.数组去重
Array.prototype.unique = function(){
var res = [];
var json = {};
for(var i = 0; i < this.length; i++){
if(!json[this[i]]){
res.push(this[i]);
json[this[i]] = 1;
}
}
return res;
}
var arr = [112,112,34,‘你好’,112,112,34,‘你好’,‘str’,‘str1’];
alert(arr.unique());
10.翻转字符串。
function reverseString(str){
    var str=str.split("").reverse().join("");
    return str;
}
alert(reverseString(“hello world!”));

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值