牛客前端篇———FED12、字符串字符统计

题目描述

统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率
1. 不限制 key 的顺序
2. 输入的字符串参数不会为空
3. 忽略空白字符

示例1

输入

'hello world'

输出

{h: 1, e: 1, l: 3, o: 2, w: 1, r: 1, d: 1}

hasOwnProperty()

记录下面这个是为了提醒自己要善用hasOwnProperty这个方法

hasOwnProperty:

官方解释:如果 object 具有带指定名称的属性,则 hasOwnProperty 方法返回 true,否则返回 false。此方法不会检查对象原型链中的属性;该属性必须是对象本身的一个成员。

(hasOwnProperty 检查的就是 object 自身的对象,换句话说就是 用console.log 打印出来的对象中是否包含 某个属性)

牛客网的答案如下:

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;
}

代码

function count(str) {
    let newarr=[];
    let result={};
    for(let i=0;i<str.length;i++)
    {
        //如果已经存在于newarr就把数字设置为1,不存在就把数据放入newarr然后数字增1
        if(newarr.indexOf(str[i])==-1)
        {
            newarr.push(str[i])
            result[str[i]]=1;
        }
        else
        {
            result[str[i]]++;
        }
    }
    return result;
}

运行环境:JavaScript (V8 6.0.0)

运行时间:995ms

占用内存:77900KB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值