Ruby如何统计大整数中出现次数最多的数字的出现频次
Ruby实现大整数最高频数字出现次数统计
实现思路
- 将大整数转换为字符串后拆分,得到单个数字组成的字符数组
- 统计每个数字的出现频次
- 提取所有频次的最大值,即为需要的结果
代码实现
简洁版(Ruby 2.7及以上版本支持)
Ruby 2.7新增了内置的tally方法可以直接统计数组元素频次,写法更简洁:
# 输入示例大整数 big_num = 123456782345673455676767878 # 统计每个数字的出现次数 count_map = big_num.to_s.chars.tally # 取最高出现次数 max_count = count_map.values.max puts max_count # 示例运行输出:6
兼容版(支持所有Ruby版本)
如果使用的Ruby版本低于2.7,没有tally方法,可以用如下写法实现相同逻辑:
big_num = 123456782345673455676767878 count_map = big_num.to_s.chars.each_with_object(Hash.new(0)) do |digit, counter| counter[digit] += 1 end max_count = count_map.values.max puts max_count
说明
如果存在多个数字出现次数同为最高的情况,上述代码依然会返回正确的最高出现次数,无需额外调整。
内容的提问来源于stack exchange,提问作者Warden
相关产品推荐
相关产品推荐

