首页 > 试题广场 >

字符串字符统计

[编程题]字符串字符统计
  • 热度指数:41881 时间限制: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) {
    var obj = {},
        len = str.length;
    str = str.replace(/\s/,'');
    for(var i = 0; i < len; i ++){
        if(obj[str[i]] == undefined){
            obj[str[i]] = 1;
        }else{
            obj[str[i]] ++;
        }
    }
    return obj;
}

发表于 2021-05-07 17:09:44 回复(0)
function count(str) {
    let result = {}
    for(let i in str){
        if(!(str[i] == " ")){
            if(!result[str[i]]){
                result[str[i]] = 1
            }else{
                result[str[i]] += 1
            }
        }
    }
    return result
}
用obj[key]的方式来判断属性是否存在,不存在就新建,赋值为1,否则就++
发表于 2021-03-31 19:55:36 回复(0)
function count(str) {
    var res={},i;
    for(i=0;i<str.length;i++) {
        if(str.charAt(i) in res)
            res[str.charAt(i)]++;
        else
            res[str.charAt(i)]=1;
    }
    return res;
}
为什么这个代码提交是错误的呢??????
等待有人帮我解答
编辑于 2021-03-27 18:38:24 回复(0)
function count(str) {
    const obj = {}
    
    str.split('').forEach(item => {
        if (!item.trim()) return
        obj[item] ? obj[item]++ : (obj[item] = 1)
    })
    
    return obj
}

function count(str) {
    const obj = {}
    str.replace(/\S/g, item => obj[item] ? obj[item]++ : obj[item] = 1)
    return obj
}

发表于 2021-03-21 15:57:51 回复(0)
function count(str) {
    let count={},len=str.length;
    for(let i=0;i<len;i++){
        (str[i]!='')&&(str[i] in count)? count[str[i]]+=1:count[str[i]]=1
    }
    return count
}

发表于 2021-01-16 19:51:16 回复(0)
哈希map
function count(str) {
  const map = new Map()
  for(let item of str) {
      if(item !== ' '){
          map[item] = map[item]? ++map[item] : 1
      }
  }
    return map
}

编辑于 2020-12-15 17:16:50 回复(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(let i = 0;i < str.length; i++){
        if(str[i] != ' '){
            if(!(str[i] in obj)){
                obj[str[i]] = 1
            }else{
                obj[str[i]]++;
            }
        }else{
            continue
        }
    }
    return obj
}

发表于 2020-09-29 12:25:06 回复(0)
function count(str) {
    let reg = /\s+/, obj = {};
    //去掉空格
    str = str.replace(/\s+/, '');
    for (let i = 0; i < str.length; i++) {
        obj[str[i]] ? obj[str[i]]++ : obj[str[i]] = 1;
    }
    return obj;
}
先将空格替换为“‘,然后遍历字符串。如果对象没有这个键设置为1,有的话则加1。
发表于 2020-07-10 21:42:38 回复(0)
function count(str) {
    let obj = {};//创建空对象
    for(let i = 0;i<str.length;i++){//循环字符串
        if(obj[str[i]]){//判断obj里面是否存在这个字符
            obj[str[i]]++;//存在的话,个数加一
        }else{
            obj[str[i]]=1;//不存在就为1
        }
    }
    return obj;//返回对象
}
发表于 2020-05-01 22:42:41 回复(0)
function count(str){
    return [...str.replace(/\s+/g, '')].reduce((prev, curr) => {
        prev[curr] ? prev[curr]++ : prev[curr] =1;
        return prev;
    },  {});
}
编辑于 2020-01-08 17:35:09 回复(0)
发表于 2019-11-27 14:40:58 回复(0)
function count(str) {
    let a={}
	  let arr=str.split(" ").join("")
	  for(let i=0;i<arr.length;i++){
		  let b=arr.split(arr[i]).length-1
		  a[arr[i]]=b
	  }
	  return a
}
不会正则,只会一些数组和字符串的操作
发表于 2019-11-01 15:27:42 回复(0)
//使用for of
function count(str) {
  str = str.replace(/\s/g,'')
  const obj = {}
  for(let val of str) {
      obj[val] = obj[val] ? obj[val]+= 1 : 1
  }
  return obj
}

编辑于 2019-10-18 17:56:35 回复(0)
使用reduce
function count(str) {
    return str.split("").reduce((prev, next) => {
        !!next && prev[next] ? prev[next]++ : prev[next] = 1;
        return prev;
    }, {})
}


发表于 2019-09-30 11:43:46 回复(0)
function count(str) {
    var obj={};
    for(var i in str){
        if(str[i]!=""){
            if(!obj[str[i]]){
            obj[str[i]]=1;
        }
            else{
                obj[str[i]]+=1;
            }
        }

    }
    return obj;
}
发表于 2019-08-17 18:59:37 回复(0)
function count(str) {
    var obj = {};
    var arr = str.split('');
    for(var i = 0, len = arr.length; i < len; i++){
        if(arr[i]){
            if(arr[i] in obj){
                obj[arr[i]]++;
            }else{
                obj[arr[i]] = 1;
            }
        }
    }
    return obj;
}

编辑于 2019-06-07 22:29:49 回复(0)

问题信息

难度:
28条回答 17131浏览

热门推荐

通过挑战的用户

查看代码