zoukankan      html  css  js  c++  java
  • 剑指Offer 12 .整数转罗马数字

    1. 题目

    罗马数字包含以下七种字符: I, V, X, LCD 和 M

     1 字符          数值
     2 I             1
     3 V             5
     4 X             10
     5 L             50
     6 C             100
     7 D             500
     8 M             1000
     9 
    10 来源:力扣(LeetCode)
    11 链接:https://leetcode-cn.com/problems/integer-to-roman
    12 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    例如, 罗马数字 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。
    给你一个整数,将其转为罗马数字。

    2. 示例

    示例1:

    输入: num = 3
    输出: "III"

    示例2:

    输入: num = 4
    输出: "IV"

    示例3:

    输入: num = 9
    输出: "IX"

    3. 题解

    根据自己的拆分来解决这个问题,比如说:

    12 = 10 + 1 + 1

    14 = 10 + 4

    652 = 500 + 100 + 50 + 1 + 1

    根据上面的规律发现,这个题其实就是往一个桶里填充能放进去的数

    4.  实现

     1 public class IntToRoman12 {
     2     public String intToRoman(int num) {
     3         int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
     4         String[] index = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
     5         StringBuilder ans = new StringBuilder();
     6         for(int i = 0; i < 13; i++) {
     7             while (num >= values[i]) {
     8                 num -= values[i];
     9                 ans.append(index[i]);
    10             }
    11             if(num == 0) break;
    12         }
    13         return ans.toString();
    14     }
    15 
    16     public static void main(String[] args) {
    17         int x = 600;
    18         System.out.println(new IntToRoman12().intToRoman(x));
    19     }
    20 }

    5. 结语

      努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!

      如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。

    但行好事 莫问前程
  • 相关阅读:
    896. Monotonic Array单调数组
    865. Smallest Subtree with all the Deepest Nodes 有最深节点的最小子树
    489. Robot Room Cleaner扫地机器人
    JavaFX
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
  • 原文地址:https://www.cnblogs.com/haifwu/p/14941980.html
Copyright © 2011-2022 走看看