用JavaScript写出代码  找出一个字符串中出现次数最多的一个字符

解决方案 »

  1.   

    <script>
    function mostCharIn(str) {
    var char,charMaxNum=0,preLength,tmpChar,tmpNum;
    while(str.length>0){
    preLength=str.length;
    tmpChar=str.substring(0,1);
    str=str.replace(new RegExp(tmpChar,"gm"),"");
    tmpNum=preLength-str.length;
    if(tmpNum>charMaxNum){charMaxNum=tmpNum;char=tmpChar;}
    }
    return char;
    }
    alert(mostCharIn("addkdjwaaDDDDDaew"));
    </script>
      

  2.   

    另一种形式:
    <script>
    String.prototype.mostChar  = function(){
    var char,charMaxNum=0,preLength,tmpChar,tmpNum,str=this;
    while(str.length>0){
    preLength=str.length;
    tmpChar=str.substring(0,1);
    str=str.replace(new RegExp(tmpChar,"gm"),"");
    tmpNum=preLength-str.length;
    if(tmpNum>charMaxNum){charMaxNum=tmpNum;char=tmpChar;}
    }
    return char;
    }alert("addkdjwaaDDDDDaew".mostChar());
    var a="adddea";
    alert(a.mostChar());
    </script>
      

  3.   

    var str = "aaaabdbbbddddd";
    str = str.split("").sort().join("");
    var maxLength = 0;
    var maxLengthChar;
    var re = /(.)\1*/g
    str = str.replace(re,function($1){if($1.length>maxLength){maxLength=$1.length;maxLengthChar=$1.substring(0,1)}});
    alert("最多的为"+maxLengthChar+",共"+maxLength+"个!");
      

  4.   

    蹭分。
    var str = "aaeeee11eeeeeeeeeaabdbbbddddd";
    var sum = {};
    var arr = []; 
    for (var i = 0; i < str.length; i++) {
        var c = str.substr(i, 1);
        if (sum[c])
            sum[c]++;
        else {
            sum[c] = 1;
            arr.push(c);
        }
    }
    arr.sort(function(a, b) { return sum[b] - sum[a]; });
    alert(arr); // arr[0]
      

  5.   

    theforever的方法不错,先用RegExp把某字符去掉得出其它的所有字符数,再用tmpNum=preLength-str.length(所有字符数-除某字符外的字符数)算某字符的个数
      

  6.   

    其实 zswang 的方法是效率最高的。