统计数字 2 出现的次数 - C/C++ 算法题
统计数字 2 出现的次数
问题描述:
请统计某个给定范围[L, R]的所有整数中,数字 2 出现的次数。
示例:
比如给定范围[2, 22],数字 2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出现 1 次,在数 21 中出现 1 次,在数 22 中出现 2 次,所以数字 2 在该范围内一共出现了 6 次。
输入描述:
输入共 1 行,为两个正整数 L 和 R,之间用一个空格隔开。
输出描述:
输出共 1 行,表示数字 2 出现的次数。
思路:
对于给定范围[L, R],可以依次遍历范围内的每一个整数,统计每个整数中数字 2 出现的次数,然后将次数累加即可。
具体实现步骤如下:
- 读取输入的两个整数 L 和 R。
- 定义一个变量 count,初始化为 0,用于统计数字 2 的出现次数。
- 从 L 开始,依次遍历到 R,对于每个整数 num,执行以下操作:
- 将 num 转为字符串 str。
- 遍历字符串 str 的每个字符,判断是否为字符 '2',如果是,则 count 加 1。
- 输出 count 的值,即为数字 2 出现的次数。
时间复杂度分析:
遍历范围内每个整数的时间复杂度为 O(R-L+1),遍历每个整数的字符串表示的时间复杂度为 O(log10(R-L+1))。所以总的时间复杂度为 O((R-L+1) * log10(R-L+1))。
空间复杂度分析:
除了输入和输出的空间外,只需要常数级别的额外空间,所以空间复杂度为 O(1)。
原文地址: https://www.cveoy.top/t/topic/qiKM 著作权归作者所有。请勿转载和采集!