题解 | #牛牛和罗马数字智力游戏#

牛牛和罗马数字智力游戏

https://www.nowcoder.com/practice/7f4bd3b2d7d34f5c87d84120d9782c1d

  • 题目考察的知识点 : 哈希表运用
  • 题目解答方法的文字分析:
  1. 使用哈希表建立罗马数字字符和对应的数值之间的映射关系。
  2. 初始化一个空字符串res来保存最终的罗马数字结果。
  3. 按照数值从大到小的顺序遍历哈希表中的键。
  4. 对每个键值,计算num可以被其整除的次数,然后将对应的罗马字符乘以该次数,拼接到res中。
  5. 用num除以键值的余数更新num,进入下一轮循环。
  6. 循环结束后,判断res的长度是否大于等于限制长度limit,如果是则反转res。
  7. 最终返回res作为结果。
  • 本题解析所用的编程语言: Python
  • 完整且正确的编程代码

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param num int整型
# @param limit int整型
# @return string字符串
#
class Solution:
    def integerToRomanWithReverse(self, num: int, limit: int) -> str:
        # 使用哈希表,按照从大到小顺序排列
        hashmap = {1000:'M', 900:'CM', 500:'D', 400:'CD', 100:'C', 90:'XC', 50:'L', 40:'XL', 10:'X', 9:'IX', 5:'V', 4:'IV', 1:'I'}
        res = ''
        for key in hashmap:
            if num // key != 0:
                count = num // key  
                res += hashmap[key] * count 
                num %= key
        if len(res) >= limit:
            res = res[::-1]
        return res


牛客高频top202题解系列 文章被收录于专栏

记录刷牛客高频202题的解法思路

全部评论

相关推荐

11-14 16:09
门头沟学院 Java
Java抽象带篮子:可以看看我的苍穹外卖话术帖子和八股笔记帖子
点赞 评论 收藏
分享
12-07 21:21
东北大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务