解决方案 »

  1.   


    var str = 'adobe: photoshop, illustrator, fireworks, dreamweaver, flash, phonegap, indesign.',
                            resutl,
                            count = 0;
                    var rs = {};
                    for (var i = 0, len = str.length; i < len; i++) {
                        var cur = str.charAt(i); //str[i];
                        if (rs[cur]) {
                            rs[cur]++;
                        } else {
                            rs[cur] = 1;
                        }
                    }                for (var k in rs) {
                        if (rs[k] > count) {
                            resutl = k;
                            count = rs[k];
                        }
                    }
                    alert(resutl + '=' + count);
      

  2.   

        var str='adobe: photoshop, illustrator, fireworks, dreamweaver, flash, phonegap, indesign.';
        var n = 0, a,s;
        for(var i= 0,l=str.length;i<l;i++){
            a = str.charAt(i);
            if(!~" ,.:".indexOf(a) && str.split(a).length > n){
                s = a;n = str.split(a).length;
            }
        }
        alert(s);
      

  3.   

        var str='adobe: photoshop, illustrator, fireworks, dreamweaver, flash, phonegap, indesign.';
        var temp=" ,.:",n = 0, a,s;
        for(var i= 0,l=str.length;i<l;i++){
            a = str.charAt(i);
            if(!~temp.indexOf(a) && str.split(a).length > n){
                s = a;n = str.split(a).length;
                temp +=s;//进一步优化
            }
        }
        alert(s);
      

  4.   


    感谢回复,有个问题请教:
    if(!~temp.indexOf(a) && str.split(a).length > n)
    !~temp.indexOf(a) 代表什么意思?
      

  5.   

    我做了一个测试,发现最后e=4,实际应该是3,好奇怪。    var str='development: unix.',
            temp=' ,.:',
            n=0,
            a,
            s;    for(var i= 0,len=str.length;i<len;i++){
            a=str[i];
            if(temp.indexOf(a)<0 && str.split(a).length>n){
                s=a;
                n=str.split(a).length;
                temp+=s;
                console.log(s+'='+n);
            }
        }
      

  6.   

    var str='adobe: photoshop, illustrator, fireworks, dreamweaver, flash, phonegap, indesign.';
    var tg = {a:0}, h = "a";
    for(var i=0,len=str.length;i<len;i++){
    var cur=str.charAt(i); //str[i];
    tg[cur] = tg[cur]?tg[cur]+1:1;
    if(tg[cur]>tg[h])
    h = cur;
    }
    alert("最多的字符是"+ h +"共有"+ tg[h] +"个。");
      

  7.   

    暴力替换,拆成数组:var str='adobe: photoshop, illustrator, fireworks, dreamweaver, flash, phonegap, indesign.';
    str=str.replace(/\:/g,"");//替换掉垃圾字符:逗号、冒号、句号
    str=str.replace(/\./g,"");
    str=str.replace(/\,/g,"");var str_arr=str.split(" ");//根据空格拆成数组
    var maxLength=0;
    var maxStr="";
    var _val="";
    for(var i=0;i<str_arr.length;i++){
    _val = str_arr[i];
    if(_val.length > maxLength){
    maxLength = _val.length;
    maxStr = _val;
    }
    }
    alert("-------------"+maxStr);
      

  8.   

    n=str.split(a).length; 它是数组的个数,而不是字符的个数。共有3个e,分割出来不就刚好是4个元素的数组吗?(1e2e3e4)
    !~temp.indexOf(a) 代表什么意思? 
    indexOf()得到的数有-1,0,1,2....n 只有0是假条件,但其实只有-1才是假条件(也就是找不到有相应的字符)
    ~indexOf()之后得到的就是 0,-1,-2,-3 刚好与需求符合了。(-1变成0,其他都是负数条件成立)