zoukankan      html  css  js  c++  java
  • LeetCode 12. Integer to Roman

    12. Integer to Roman(整数转罗马数字)

    链接:https://leetcode-cn.com/problems/integer-to-roman/

    题目:

      罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

      字符 数值
      I 1
      V 5
      X 10
      L 50
      C 100
      D 500
      M 1000
      例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。

      通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

      I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
      X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
      C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
      给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。

      示例 1:

      输入: 3
      输出: "III"
      示例 2:

      输入: 4
      输出: "IV"
      示例 3:

      输入: 9
      输出: "IX"
      示例 4:

      输入: 58
      输出: "LVIII"
      解释: L = 50, V = 5, III = 3.
      示例 5:

      输入: 1994
      输出: "MCMXCIV"
      解释: M = 1000, CM = 900, XC = 90, IV = 4.

    思路:

      倒也不是很麻烦,就是分类筛选,对于字符串进行添加操作,1000级和1级需要借助while循环,别的数直接用if进行一次判断即可。

    代码:

     1 public static String intToRoman(int num) {
     2     StringBuilder str = new StringBuilder();
     3     while (num >= 1000) {
     4       str.append("M");
     5       num = num - 1000;
     6     }
     7     if (num >= 900) {
     8       str.append("CM");
     9       num = num - 900;
    10     }
    11     if (num >= 500) {
    12       str.append("D");
    13       num = num - 500;
    14     }
    15     if (num >= 400 && num < 500) {
    16       str.append("CD");
    17       num = num - 400;
    18     }
    19     while (num >= 100) {
    20       str.append("C");
    21       num = num - 100;
    22     }
    23 
    24     if (num >= 90) {
    25       str.append("XC");
    26       num = num - 90;
    27     }
    28     if (num >= 50) {
    29       str.append("L");
    30       num = num - 50;
    31     }
    32     if (num >= 40 && num < 50) {
    33       str.append("XL");
    34       num = num - 40;
    35     }
    36     while (num >= 10) {
    37       str.append("X");
    38       num = num - 10;
    39     }
    40 
    41     if (num >= 9) {
    42       str.append("IX");
    43       num = num - 9;
    44     }
    45     if (num >= 5) {
    46       str.append("V");
    47       num = num - 5;
    48     }
    49     if (num >= 4 && num < 5) {
    50       str.append("IV");
    51       num = num - 4;
    52     }
    53     while (num >= 1) {
    54       str.append("I");
    55       num = num - 1;
    56     }
    57     return str.toString();
    58   }
  • 相关阅读:
    Oracle 推出 ODAC for Entity Framework 和 LINQ to Entities Beta版
    Entity Framework Feature CTP 5系列文章
    MonoDroid相关资源
    MSDN杂志上的Windows Phone相关文章
    微软学Android Market推出 Web Windows Phone Marketplace
    使用 Visual Studio Agent 2010 进行负载压力测试的安装指南
    MonoMac 1.0正式发布
    Shawn Wildermuth的《Architecting WP7 》系列文章
    使用.NET Mobile API即51Degrees.mobi检测UserAgent
    MongoDB 客户端 MongoVue
  • 原文地址:https://www.cnblogs.com/blogxjc/p/11220268.html
Copyright © 2011-2022 走看看