首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

LeetCode 12 Integer to Roman:整數轉羅馬數字

     編輯:關於C++

題目翻譯

給定整數(1~3999),轉換為羅馬數字。

解題思路

羅馬數字包含減法表示(4=IV, 9=IX, 40=XL, 90=XC, 400=CD, 900=CM)。將所有「基數」按值降序排列,貪心法:當數值 ≥ 當前基數,輸出對應符號,減去基數值,重複直到數值為 0。

C# 實現(枚舉版)


public class Solution {
    public string IntToRoman(int num) {
        string result = "";
        Type R = typeof(Roman);
        foreach (var r in Enum.GetNames(R).Reverse()) {
            int val = int.Parse(Enum.Format(R, Enum.Parse(R, r), "d"));
            while (num >= val) { result += r; num -= val; }
        }
        return result;
    }
    public enum Roman { M=1000, CM=900, D=500, CD=400, C=100, XC=90, L=50, XL=40, X=10, IX=9, V=5, IV=4, I=1 };
}

關鍵點

  • 枚舉包含所有減法基數(900, 400, 90, 40, 9, 4)。
  • Reverse() 確保從大到小處理。
  • Enum.Parse/Format 取得數值。

對應題目

下一題 LeetCode 13 Roman to Integer 為反向轉換。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved