1. 程式人生 > 遊戲 >日本任天堂官方雜誌 2021 年冬季數字版 足足百頁內容豐富

日本任天堂官方雜誌 2021 年冬季數字版 足足百頁內容豐富

羅馬數字包含以下七種字元: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。
給你一個整數,將其轉為羅馬數字。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/integer-to-roman
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

import java.util.Scanner;

class Solution {

    private static int nums[] = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000};

    private static String[] strs = {"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"};

    public static String intToRoman(int num) {
        StringBuilder sb = new StringBuilder();

        int index = nums.length - 1;
        while (num > 0) {
            while (nums[index] > num) {
                index--;
            }
            sb.append(strs[index]);
            num -= nums[index];
        }

        return sb.toString();
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            System.out.println(intToRoman(in.nextInt()));
        }
    }
}
心之所向,素履以往 生如逆旅,一葦以航