判断一个字符串中出现次数最多的字符,统计这个次数

发布时间 2023-11-16 10:43:39作者: 龙陌
var str = "stiabsstringapbs";
 var obj = {};
 for (var i = 0; i < str.length; i++) {
          var key = str[i];
               if (!obj[key]) {
                   obj[key] = 1;
              } else {
                   obj[key]++;
                }
  }
  var max = -1;
  var max_key = "";
  var key;
  for (key in obj) {
           if (max < obj[key]) {
                     max = obj[key];
                     max_key = key;
         }
 }
   alert("max:"+max+" max_key:"+max_key);

关于上述代码说法错误的是( )。
A
obj是用来统计字符数量的

B
代码所实现的功能是:统计字符串中,所有字符的数量

C
max表示最大字符,key表示字符

D
代码实现功能是:判断一个字符串中出现次数最多的字符,统计这个次数

正确答案:BC

var str = "stiabsstringapbs";                 //定义字符串
 var obj = {};                                //定义对象
 for (var i = 0; i < str.length; i++) {       //遍历字符串
          var key = str[i];                   //存储字符
               if (!obj[key]) {               //若对象中不存在该key,初始化为1
                   obj[key] = 1;
              } else {                        //若对象中存在该key,则数值加1
                   obj[key]++;
                }
  }                               
/*第一个for循环结束得到每个字符数量的对象,大概下面这鸟样
obj={
    s:4,
    t:2,
    i:2,
    ...
}*/
  var max = -1;                               //初始化最大数量,最大数量字符
  var max_key = "";
  var key;
  for (key in obj) {                          //遍历obj对象,获得字符最大数量及对应字符
           if (max < obj[key]) {
                     max = obj[key];
                     max_key = key;
         }
 }
   alert("max:"+max+" max_key:"+max_key);

A. 正确。obj是用来统计字符数量的,每一个key就是对应的字符,对应的value就是这个字符出现的次数。

B. 错误。因为最后输出的是max和max_key。如果是统计字符串中,所有字符的数量,要对obj所含有的所有属性进行统计。

C. 错误。max统计的一个字符串中出现次数最多的字符的次数,而key就是这个字符。

D. 正确。obj对象进行字符出现次数的统计,循环进行出现次数最多的字符的判断和保存。所以代码实现功能是:判断一个字符串中出现次数最多的字符,统计这个次数