leetcode 12. 整数转罗马数字


解题思路

1.首先,将值与对应字符用字典来表示,然后将符号对应的值按有序顺序存储至列表中sums

2.将要转换的整数转换成列表形式,遍历列表,每次遍历:

  • 将值取出来算出对应所在位置的实际值 如 32 对应列表 3,2 则 3实际值应为 3 x 101 = 30 2
    实际值为 2 x 10
    0
  • 计算出实际值后,将对应的值替换成对应的罗马字符,此时从列表末尾开始遍历sums,找到列表比实际值小的第一个值,这个值所代表的键值对即为实际值要替换罗马数字的一部分,依次查找至实际值=0,则代表已找到此实际值所表示的罗马数字

代码

python 复制代码
class Solution(object):
    def intToRoman(self, num):
        """
        :type num: int
        :rtype: str
        """
        dict1 = {
            "1":"I",
            "4":"IV",
            "5":"V",
            "9":"IX",
            "10":"X",
            "40":"XL",
            "50":"L",
            "90":"XC",
            "100":"C",
            "400":"CD",
            "500":"D",
            "900":"CM",
            "1000":"M"
        }
        sums = [1,4,5,9,10,40,50,90,100,400,500,900,1000]
        s = ''
        t = [int(i) for i in list(str(num))]
        count = len(t)
        for i in range(count):
            nums = t[i]*pow(10,count-i-1)
            while nums>0:
                for j in range(len(sums)):
                    if sums[len(sums)-1-j]<=nums:
                        s=s+dict1[str(sums[len(sums)-1-j])]
                        nums-=sums[len(sums)-1-j]
                        break
        return s
相关推荐
库玛西1 分钟前
计算机网络第三章:数据链路层
服务器·网络·计算机网络·考研·算法·面试
空~自由3 分钟前
Python 正则 . * ? .* .*? (.*?) 通俗讲解
开发语言·python
邹霍梁@开源软件GoodERP4 分钟前
【出海 ERP】本地没库存时:自产自销还是转口贸易?一张决策树给财务和 IT
算法·决策树·机器学习
Web3&Basketball4 分钟前
DeepSeek V4.1 Flash 实测:Token 砍半、Search API 跑通
数据库·人工智能·python·大模型·api调用·deepseek·推理优化
墨子夕7 分钟前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(第一篇)
java·python·设计模式
程序 代码狂人10 分钟前
经典 SQL 面试题:连续登录问题的两种经典解法
java·开发语言·算法
Linux实战笔记12 分钟前
凌晨 3 点接口超时,排查发现 asyncio 协程里混用了同步 requests 库
python·asyncio·aiohttp·事件循环阻塞·协程调试
weixin_BYSJ198713 分钟前
【计算机毕设】房屋租赁系统02647
java·vue.js·spring boot·python·django·课程设计
大熊背14 分钟前
一种数码相机快速自动曝光控制方法解读
算法·计算机视觉·自动曝光·快速收敛
在世修行30 分钟前
智学文枢:数据归谁管、变了怎么通知
python·桌面应用·状态管理·signal·store·pyside