数字num中对应的圈数量是多少?

数字num中对应的圈数量是多少?

提示:本题是20220409美团笔试题1
整体的感觉就是:
平时扎实地训练,并打好基础,培养敏感度,是非常有必要。
当你见多识广,你一看考题就知道大概用什么样的数据结构去做,也知道用啥样的算法路程解决题目了。



题目

小团和小美在玩数圈游戏,游戏规则是这样的:

给出一个数字,小美需要立刻说出这个数字包含的圈圈的数量。
因为小团提问的频率非常快,小美希望你能帮她用程序来计算出来。

例如,对于数字0,包含1个圈,对于数字2,包含0个圈,对于数字8,包含2个圈。
我们给出对圈的认定标准如下表:arr

数字圈数量
01
10
20
30
40
50
61
70
82
91

输入描述
输入一行仅包含一个十进制整数n
对于80%的数据,n<=100000
对于20%的数据,n<=1000000000
输出描述
输出仅包含一个正整数,表示十进制数字n中的圈圈数


一、审题

题目很容易理解,就是给你一个数
比如:60498
去表格里面找,
6对应几个圈?1
0对应几个圈?1
4对应几个圈?0
9对应几个圈?1
8对应几个圈?2

求和得5,非常简单的题目

二、解题

当时我一看题目,瞬间就知道,这种和数字处理有关的题目,应该很简单的
既然有一个表,那就用哈希表对应起来,不过后来我想,不用申请哈希表了,直接用数组实现哈希表的功能
让数组arr=int[] arr = {1,0,0,0,0,0,1,0,2,1};//表示代表的圈数,下标i就是我们的原始数字

算法大流程

ans=0
输入一个字符串s,待会用ASCII码去转化数字即可
挨个遍历字符串s,累加ans+=arr[s[i] - ‘0’]就是结果
图1

代码:

public static class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            // 注意 hasNext 和 hasNextLine 的区别
            String num = in.next();

            int[] arr = {1,0,0,0,0,0,1,0,2,1};//表示代表的圈数
            //挨个判断字符
            int ans = 0;
            for (int i = 0; i < num.length(); i++) {
                int bit = num.charAt(i) - '0';//转数字
                ans += arr[bit];
            }

            System.out.println(ans);
        }
    }

总结

提示:本题借鉴知识点:

哈希表可以用arr表示
ACM格式的数字可以用字符串输入,基本就是各大大厂们考的第一题类型。考的就是你有没有coding的能力,没别的意思。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰露可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值