数字num中对应的圈数量是多少?
数字num中对应的圈数量是多少?
提示:本题是20220409美团笔试题1
整体的感觉就是:
平时扎实地训练,并打好基础,培养敏感度,是非常有必要。
当你见多识广,你一看考题就知道大概用什么样的数据结构去做,也知道用啥样的算法路程解决题目了。
文章目录
- 数字num中对应的圈数量是多少?
- 题目
- 一、审题
- 二、解题
- 总结
题目
小团和小美在玩数圈游戏,游戏规则是这样的:
给出一个数字,小美需要立刻说出这个数字包含的圈圈的数量。
因为小团提问的频率非常快,小美希望你能帮她用程序来计算出来。
例如,对于数字0,包含1个圈,对于数字2,包含0个圈,对于数字8,包含2个圈。
我们给出对圈的认定标准如下表:arr
| 0 | 1 |
| 1 | 0 |
| 2 | 0 |
| 3 | 0 |
| 4 | 0 |
| 5 | 0 |
| 6 | 1 |
| 7 | 0 |
| 8 | 2 |
| 9 | 1 |
输入描述
输入一行仅包含一个十进制整数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’]就是结果
代码:
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的能力,没别的意思。
总结
以上是生活随笔为你收集整理的数字num中对应的圈数量是多少?的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 专家系统类毕业论文文献(推荐10篇)
- 下一篇: 数据来源渠道及采集工具_工业数据采集工具