阿拉伯数字转换成罗马数字
来源:互联网 发布:名字抽奖软件 编辑:程序博客网 时间:2024/05/22 06:08
阿拉伯数字转换成罗马数字
Integer to Roman
给出一个阿拉伯数字,返回此数字的罗马数字表示
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
example 1
input: CCCLXXXIXoutput: 389
思路
- 用表记录关键的罗马数字和阿拉伯数字,将输入循环除以1000,900,500 … 这些关键数字,余数为
y
,将对应的罗马字符串加y
次 - 看到大神的思路,也是查表,但更加精妙,将数字分解为千位,百位,十位和个位,然后查表将字符串相加,很神奇的思路,刚看到的时候惊叹了一下,代码如下
代码
class Solution(object): # 思路1 def intToRoman1(self, num): """ :type num: int :rtype: str """ arabic = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1] roman = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'] ret = '' i = 0 while num: yu = num // arabic[i] ret += roman[i] * yu num = num - yu * arabic[i] i += 1 return ret # 神奇的思路2 def intToRoman2(self, num): M = ['', 'M', 'MM', 'MMM'] #0, 1000, 2000, 3000 C = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'] #0, 100, 200, ... , 900 X = ['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'] #0, 10, 20, ... , 90 I = ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'] #0, 1, 2, ... , 9 return M[num // 1000] + C[(num % 1000) // 100] + X[(num % 100) // 10] + I[num % 10]
本题以及其它leetcode题目代码github地址: github地址
阅读全文
0 0
- 罗马数字转换成阿拉伯数字
- 阿拉伯数字转换成罗马数字
- 阿拉伯数字转换成罗马数字
- 罗马数字转换成阿拉伯数字
- 将罗马数字转换成阿拉伯数字
- 将阿拉伯数字转换成罗马数字
- 将罗马数字转换成普通的阿拉伯数字
- Javascript 将阿拉伯数字转换成罗马数字
- 【C++】将罗马数字转换成阿拉伯数字
- 罗马数字转换为阿拉伯数字
- 将阿拉伯数字转换为罗马数字
- 将阿拉伯数字转换为罗马数字
- 罗马数字与阿拉伯数字相互转换
- 罗马数字转换阿拉伯数字0~3999
- 将阿拉伯数字转换成罗马数字 Integer to Roman
- 罗马数字转换成阿拉伯数字以及递归的简单运用
- kotlin实现罗马数字和阿拉伯数字转换
- Python 罗马数字与阿拉伯数字的转换
- 需要复习的:FFmpeg源代码简单分析:结构体成员管理系统-AVOption
- 行内元素,块级元素与空元素
- Pow(x, n)
- 欢迎使用CSDN-markdown编辑器
- 软件测试员----面试,你准备好了么?
- 阿拉伯数字转换成罗马数字
- CSS id与class
- 用oracle的rollup函数进行合计操作
- 前端问题和解决方法
- MAC --消息认证码
- 获取当月天数的方法
- wex5组件--messageDialog
- SDUT-1162 C语言实验——保留字母
- 使用oradebug ipc来检查cluster interconnect