js 三种方法实现给你一个字符串,要你找出里面出现次数最多的字母和出现的次数,例如:“abaasdffggghhjjkkgfddsssss”;

方法一:(正则法)

var str = "abaasdffggghhjjkkgfddsssss";
var arr1 = [];    //用于存放每轮循环相同的字符串
var str2 = "";    //用于存放出现次数最多的那个字符
var max = 0;		//用于存放出现的最大次数(就是数组arr1的长度)
for(var i = 0;i < str.length;i++){
    var reg = new RegExp(str[i],"g");
    arr1 = str.match(reg);
    if(arr1.length > max){
        max = arr1.length;
        str2 = str[i];
    }
}
console.log(str2+","+max)

方法二:(常规方法)

var str = "abaasdffggghhjjkkgfddsssss";
var arr1 = [];    //存放不重复的字符
var arr2 = [];      //存放各个字符出现的次数
for(var i = 0;i < str.length;i++){
    var index = arr1.indexOf(str[i]);
    if(index == -1){
        arr1.push(str[i]);
        arr2.push(1);     //每有一个不相同的字符就向数组arr2中存放一个1,代表出现了一次
    }else {
        arr2[index] ++;     //每次出现相同的字符先判断在数组arr1中的位置,在使用此index让数组arr2的对应下标的项自增一
    }
}
console.log(arr1);
console.log(arr2);

var max = 0;
for(var j = 0;j < arr2.length;j++){
    
    if(arr2[j] > max){
        var s = "";
        max = arr2[j];
        s = arr1[j];
    }
}
console.log(s+","+max)

方法三:(删除法)

var str = "abaasdffggghhjjkkgfddsssss";
var arr = str.split('');
var count = 0;     //统计数量
var a = [];    //存放各个字符数量的数组
for(var i = 0;i < arr.length;i++){
    for(var j = i;j < arr.length;j++){
        if(arr[i] == arr[j+1]){       //判断当前项和当前项的下面所有项是否相等
            arr.splice(j+1,1);      //如果相等就删除此项   
            j--;				//删除此项,担负起安详的后面所有项会前移,所以让j--
            count++;
        }
    }
    a.push(count);
    count = 0;
}

console.log(a);
a.sort(sortNum);

function sortNum(a,b){
    return b-a;
}

console.log(a[0] + 1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值