JS算法:统计字符

1. 题目

请读取出arr字符串中每个字母重复出现的次数分别是多少?如字符串arr="abcdaabc",a重复出现3次,b重复出2次,c重复出2次,d重复出1次。

2. 算法

  1. 定义记录出现字符的数组chars和字符出现次数的数组counts
  2. 遍历字符串的每一个字符
  3. 判断字符是否已经存在chars,如果存在,则相应计数加一;否则,把字符添加到chars中,counts相应增加数据1

3. 代码

var arr = "abcdaabc";

// 记录字符
var chars = [];
// 记录字符出现次数
var counts=[];

// 遍历字符串每一个字符
for( var i in arr ){
  // 获取字符位置
  var index = chars.indexOf(arr.charAt(i));
  
  if(-1==index){
    // 如果不存在
    chars.push(arr.charAt(i));// 保存新的字符
    counts.push(1); // 新的字符计数设为1
  }else{
    // 如果存在,对应计数加一
    counts[index]++;
  }
}

// 测试:打印结果
for( var i in chars ){
  document.write("字符"+chars[i]+"出现"+counts[i]+"次 ");
}

4. 优化

一般处理都是作为函数,所以我们可以把上面的处理做成函数。
输入值为字符串,输出值为结果对象。

function countStr(){
// 记录字符
var chars = [];
// 记录字符出现次数
var counts=[];

// 遍历字符串每一个字符
for( var i in arr ){
  // 获取字符位置
  var index = chars.indexOf(arr.charAt(i));
  
  if(-1==index){
    // 如果不存在
    chars.push(arr.charAt(i));// 保存新的字符
    counts.push(1); // 新的字符计数设为1
  }else{
    // 如果存在,对应计数加一
    counts[index]++;
  }
}
return {
 chars : chars,
 counts:counts
};
}
// 测试
var arr = "abcdaabc";
var res = countStr(arr); 
for( var i in res.chars ){
  document.write("字符"+res.chars[i]+"出现"+res.counts[i]+"次 ");
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容