• 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
  • 相关阅读:
    九九乘法表
    获取1-10 的和,并打印 2.1-100 之间 7 的倍数的个数,并打印
    1-100之间 7 的倍数的个数,并打印
    无限循环的最简单的表现形式
    for 和 while 区别
    do while 和 while 区别
    if 和 switch 比较
    星期和月份
    【运筹优化】求职与工作思考 -求职需要的技能(一)
    python 在线笔试的OJ输入输出总结
  • 原文地址:https://www.cnblogs.com/19991201xiao/p/8470731.html
Copyright © 2020-2023  润新知