笔试:找出一个字符串中字符出现最多的次数和该字符

我用的是js,

每次取出字符串的第一个字母,然后把和它相同的字符利用“”替换掉,然后来比较替换前和替换后的字符串长度相差多少,
那么差值就是就是里面该字符的个数,找出这个差值最大的就是和所对应的替换字符。

            var str ="djlxsdjlxs"; //命名一个变量放置给出的字符串
            var maxLength = 0; //命名一个变量放置字母出现的最高次数并初始化为0
            var result = ''; //命名一个变量放置结果输入  
            
            while( str != '' ){ //循环迭代开始,并判断字符串是否为空
                oldStr = str; //将原始的字符串变量赋值给新变量
                getStr = str.substr(0,1); //用字符串的substr的方法得到第一个字符(首字母)
                eval("str = str.replace(/"+getStr+"/g,'')"); //详细如补充  
            
                if( oldStr.length-str.length > maxLength ) { //判断原始的字符串的长度减去替代后字符串长度是否大于之前出现的最大的字符串长度
                    maxLength = oldStr.length-str.length; //两字符串长度相减得到最大的字符串长度
                    result = getStr + "=" + maxLength //返回最大的字符串结果(字母、出现次数)
                }
            }  
            
            alert(result) //弹出结果  

当然这里有个要注意的地方,那就是我们用到了eval函数,因为我们的正则是一个变量,

'/'+firstr+'/g'

这个是不行的,如果我们要使用变量,还有一种方法就是利用正则的构造函数。

var reg=new RegExp(firstr,"g")

真是坑不断啊

posted @ 2016-09-18 20:26  DJL箫氏  阅读(1471)  评论(0编辑  收藏  举报