hackerrank上的数字频率问题 [英] Digit frequency problem on hackerrank

查看:90
本文介绍了hackerrank上的数字频率问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题链接: HackerRank [ ^ ]



这是我的解决方案我想知道它有什么问题



我尝试了什么:



Problem Link : HackerRank[^]

here is my solution i want to know what's wrong with it

What I have tried:

int main()
{

    int i = 0 , resultArr[10];
    char buffer = 0;

    do
    {
        scanf("%c",&buffer);
        for ( i = 0 ; i < 10 ; i++)
        {
            if ((buffer - '0') == i)
                resultArr[i]++;
        }
    }
    while(buffer != '\n');


    for ( i = 0 ; i < 10 ; i++)
        printf("%d ",resultArr[i]);

    return 0;
}

推荐答案

Quote:

这是我的解决方案我想知道它有什么问题

here is my solution i want to know what's wrong with it



尝试用零初始化 resultArr [10] 。它可能会有所帮助。


Try to start by initialize resultArr[10] with zeroes. It might help.


正如 ppolymorphe 指出的那样,你需要对数组项进行零初始化。

As ppolymorphe pointed out, you need to zero-initialize your array items.
int resultArr[10] = {0};



就足够了。



请注意以下内容代码应该更快:


is just enough.

Please note the following code should be faster:

#include <stdio.h>
int main()
{

    int i = 0 , resultArr[10] = {0};
    char buffer = 0;

    do
    {
        scanf("%c",&buffer);
        if ( buffer >= '0' && buffer <= '9' )
          ++resultArr[buffer-'0'];
    }
    while(buffer != '\n');


    for ( i = 0 ; i < 10 ; i++)
        printf("%d ",resultArr[i]);

    return 0;
}


这篇关于hackerrank上的数字频率问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆