首页 > 试题广场 >

字符串字符统计

[编程题]字符串字符统计
  • 热度指数:41863 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率
1. 不限制 key 的顺序
2. 输入的字符串参数不会为空
3. 忽略空白字符

输入描述:
'hello world'


输出描述:
{h: 1, e: 1, l: 3, o: 2, w: 1, r: 1, d: 1}
示例1

输入

'hello world'

输出

{h: 1, e: 1, l: 3, o: 2, w: 1, r: 1, d: 1}
function count(str) {
    let arr = str.trim().split("");
    let obj = {}
    for(let k of arr){
        !obj[k]?obj[k]=1:obj[k]++;
    }
    return obj
}
发表于 2021-10-14 21:42:55 回复(0)
const count = str => {
    const map = {};
    for (let i = 0; i < str.length; i++) {
        if (str[i] !== ' ') {
            map[str[i]] = map[str[i]] ? map[str[i]] + 1 : 1;
        }
    }
    return map;
};

发表于 2021-06-02 13:12:01 回复(0)
function count(str) {
    let m = new Map()
    for(let i = 0 ;i<str.length;i++){
        let key = str[i]
        if(m.has(key)){
            m.set(key,m.get(key)+1)
        }else{
            m.set(key,1)
        }
        
    }
    let obj= Object.create(null);
    for (let[k,v] of m) {
        obj[k] = v;
    }
    return obj

}
发表于 2021-06-01 17:08:50 回复(0)
function count(str) {
    let result = {};
    str = str.replace(/\s/g,"");
    while(str.length>0){
        let len = str.length-1;
        result[str[len]] ? result[str[len]]++ : result[str[len]] = 1;
        str = str.slice(0,len);
    }
    return result;
}

function count(str) {
    let result = {};
    str.replace(/\S/g,function(str){
        result[str] ? result[str]++ : result[str] = 1;
    })
    return result;
}


编辑于 2020-10-19 15:42:26 回复(0)
//1、将字符串转换为数组,调用forEach方法
//2、利用对象的hasOwnProperty方法求解
function count(str) {
    var arr = Array.from(str);
    var obj = {};
    arr.forEach(function(item,i){
        if(item != " "){
            if(!obj.hasOwnProperty(item)){
                obj[item] = 1;
            }else{
                obj[item] += 1;
            }
        }
    })
    return obj;
}

发表于 2020-07-27 22:11:25 回复(0)
function count(str) {
    var arr = str.replace(/\s+/g, '').split('');
    var obj = {};
    arr.forEach(function (item) {
        if(obj && obj[item]) {
            obj[item]++;
        } else {
            obj[item] = 1;
        }
    })
    return obj;
}

发表于 2017-10-23 14:09:36 回复(0)
function count(str){
	var obj = {};
	str=str.replace(/\s/g, '');
	for(var i=0,len=str.length; i<len; i++){
		var key = str[i];
		 if(obj[key] != null){
		 	obj[key]++;
		 }else{
		 	obj[key]=1;
		 }
	}
	return obj;
}
console.log(count('hello world'));

发表于 2017-03-23 11:11:20 回复(0)
function count(str){
        var result = {};
        for (var i=0;i<str.length;i++){
            if(str.charAt(i)!==' '){
                if(!result[str.charAt(i)]){
                    result[str.charAt(i)] = 1;
                }else{
                    result[str.charAt(i)]++;
                }
            }
        }
        return result;
       }
       console.log(count('hello world'));

发表于 2016-10-22 21:26:26 回复(0)
function count(str) {
	str=str.replace(/\s/g,'');
	var arr = str.split("");
	var obj = {};
	for(var i=0;i<arr.length;i++){
		if(obj[arr[i]]){
			obj[arr[i]]++;
		}else{
			obj[arr[i]]=1;
		}
	}
	return obj;
}

发表于 2016-10-12 19:10:30 回复(0)
function count(str) {
	var counter = {};
    str.replace(/\S/g, function(m){
        if(m in counter) counter[m]++;
        else counter[m] = 1;
    })
    return counter;
}

发表于 2016-08-15 16:10:29 回复(0)
function count(str) {
    var result={};
    str=str.replace(/\s+/g,"");
    for (var i=0;i<str.length;i++) {
        result[str.charAt(i)]=result[str.charAt(i)]!=void(0)?result[str.charAt(i)]+1:1;     
    }
    return result;
}


发表于 2016-08-09 19:09:39 回复(0)
function count(str) {
	var obj = {};
	str.replace(/\S/g,function(s){
		!obj[s]?obj[s]=1:obj[s]++;
	})
	return obj;
}

发表于 2015-11-29 21:09:48 回复(23)
function count(str) {
    var res = {};
    var arr = str.split('');
    for(var i = 0; i < arr.length; i++){
        if(arr[i] == ''){
            arr.splice(i,1);
            i--
        }
        else{
            if(i >= 0){
                if(arr[i] in res){
                    res[arr[i]] ++;
                }
                else{
                    res[arr[i]] = 1;
                }
            }
        }
    }
    return res;
}
太冗长了
编辑于 2015-10-02 22:20:14 回复(0)
function count(str) {
    for(var i=0, m=str.length, res={}; i<m; i++){
        if(str.charAt(i) in res) res[str.charAt(i)]++;
        else res[str.charAt(i)] = 1;
    }
    return res;
}

发表于 2015-09-29 22:42:47 回复(11)
function count(str) {
    var obj = {};
    
    for (var i = 0; i < str.length; ++i) {
        if (str[i] !== ' ') {
            obj[str[i]] = obj[str[i]] ? ++obj[str[i]] : 1;
        }
    }
    
    return obj;
}

发表于 2018-08-26 04:04:46 回复(1)
function count(str) { var obj = {};  for (var i = 0; i < str.length; i++) { if (str[i] !== ' ') { var key = str[i];  if (obj[key] !== undefined) {
                obj[key] = obj[key] + 1;  } else {
                obj[key] = 1;  }
        }
    } return obj; }


1、首先创建一个空数组
2、将传入的字符串开始遍历输出每一个
3、将解析字符串解析出来的每一个字符都分别赋予之前声明的数组当中【需要判断解析出的数组是否为空】
4、使用if else分别对之前存储的数组进行分别储存  若是存在则obj[key]+1
发表于 2019-03-29 23:37:55 回复(0)
//就是循环遍历字符串,给对象添加属性,
//如果该对象不存在该属性,就添加
//如果存在,就将属性的值加1
function count(str) {
        var obj = {};

        for(var i = 0, len = str.length; i < len; i++){
            var s = str[i];
            var bool = (s !== ' ');
            var count = 0;

            if((!obj[s]) && bool){
                count++;
                obj[s] = count;
                count = 0;
            }else if(bool){
                obj[s] += 1;
            }
        }
        return obj;
    }
    console.log(count('hello world')); 

发表于 2017-02-21 18:01:20 回复(0)
function count(str) {
    var obj={};
    str=str.replace(/\s/,'');
    for(var i=0,length=str.length;i<length;i++){
        if(obj.hasOwnProperty(str[i])){
            obj[str[i]]++;
        }else{
            obj[str[i]]=1;
        }
    }
    return obj;
}

发表于 2016-08-21 20:38:29 回复(0)
思路:
  1. 用正则表达式去除字符串中的所有空白字符
  2. 利用es6的reduce来统计词频(检测对象中是否有某个属性利用的是undefined来判断)
function count(str) {
  //去除空白字符处理
  str = str.replace(/\s*/g,'');
  //统计词频
  let arr = [...str];
  let res = arr.reduce(function(prev,cur){
    prev[cur] ? prev[cur]++ : prev[cur]=1;
    return prev;
  },{})
  return res;
}


编辑于 2020-11-23 17:35:06 回复(0)
function count(str) {
    var obj={};
    for(var i=0;i<str.length;i++){
        if(str[i]!=''){
            if(obj[str[i]]){
                obj[str[i]]+=1;
            }else{
                obj[str[i]]=1;
            }
        }
    }
    return obj;
}
发表于 2018-03-28 11:45:40 回复(0)