当前位置: 首页 > news >正文

38.leetcode12_integer_to_roman

1.题目描述

Given an integer, convert it to a roman numeral.

十进制数字转为罗马数字

2.题目分析

罗马数字计数方法

基本字符
I
V
X
L
C
D
M
相应的阿拉伯数字表示为
1
5
10
50
100
500
1000
  1. 相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;
  2. 小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
  3. 小的数字(限于 I、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
  4. 正常使用时、连写的数字重复不得超过三次;
  5. 在一个数的上面画一条横线、表示这个数扩大 1000 倍。

3.解题思路

 1 class Solution(object):
 2     def intToRoman(self, num):
 3         """
 4         :type num: int
 5         :rtype: str
 6         """
 7         strs=""
 8         x=0
 9         if num>=1000: #从千位以上开始依次计算
10             x=num/1000
11             num-=1000*x
12             strs+=x*"M"
13         if num>=900: 
14             num-=900
15             strs+="CM"
16         if num>=500:
17             x=(num-500)/100
18             num=num%100
19             strs+="D"+x*"C"
20         if num>=400:
21             num-=400
22             strs+="CD"
23         if num>=100:
24             x=num/100
25             num-=x*100
26             strs+=x*"C"
27         if num>=90:
28             num-=90
29             strs+="XC"
30         if num>=50:
31             x=(num-50)/10
32             num=num%10
33             strs+="L"+x*"X"
34         if num>=40:
35             num-=40
36             strs+="XL"
37         if num>=10:
38             x=num/10
39             num-=x*10
40             strs+=x*"X"
41         if num==9:
42             num=0
43             strs+="IX"
44         if num>=5:
45             x=num-5
46             num=0
47             strs+="V"+x*"I"
48         if num==4:
49             num=0
50             strs+="IV"
51         if num!=0:
52             strs+=num*"I"
53             num=0
54         if num==0:
55             return strs

 

转载于:https://www.cnblogs.com/19991201xiao/p/8470731.html

相关文章:

  • Adapter 适配器模式
  • markdown
  • svn操作
  • asp和asp.net中怎样解决中文乱码问题
  • 66 机器人的运动范围
  • ZOJ 2110 Tempter of the Bone DFS搜索+奇偶剪枝
  • mysql myisam存储引擎关于锁的3个参数
  • 【Android】ListView中getView的原理与解决多轮重复调用的方法
  • oracle利用触发器实现主键字段自增
  • 函数的重写
  • wx入门(一)
  • ZOJ 1649 Rescue BFS水题
  • Linux 性能分析的前 60 秒
  • C++继承体系下类中属性的能见度总结
  • 案例45-crm练习改写客户列表使用struts2OGNL
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • C++11: atomic 头文件
  • canvas绘制圆角头像
  • Centos6.8 使用rpm安装mysql5.7
  • hadoop集群管理系统搭建规划说明
  • JS变量作用域
  • mysql 5.6 原生Online DDL解析
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • RxJS: 简单入门
  • vue的全局变量和全局拦截请求器
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 翻译--Thinking in React
  • 经典排序算法及其 Java 实现
  • 数组大概知多少
  • 我有几个粽子,和一个故事
  • #NOIP 2014#Day.2 T3 解方程
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #预处理和函数的对比以及条件编译
  • $GOPATH/go.mod exists but should not goland
  • (03)光刻——半导体电路的绘制
  • (C++17) std算法之执行策略 execution
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)计算机毕业设计大学生兼职系统
  • (论文阅读30/100)Convolutional Pose Machines
  • (排序详解之 堆排序)
  • (转)Linux下编译安装log4cxx
  • **CI中自动类加载的用法总结
  • *上位机的定义
  • .net core 6 redis操作类
  • .Net MVC + EF搭建学生管理系统
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET正则基础之——正则委托
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [C#]使用PaddleInference图片旋转四种角度检测
  • [COGS 622] [NOIP2011] 玛雅游戏 模拟
  • [Grafana]ES数据源Alert告警发送