程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> LeetCode 12 Integer to Roman(整型數到羅馬數)

LeetCode 12 Integer to Roman(整型數到羅馬數)

編輯:關於C++

翻譯

給定一個整型數值,將其轉換到羅馬數字。

輸入被保證在1到3999之間。

原文

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

我不會告訴你一開始我是用的無數個變量和if……

後來實在受不了這麼多變量就將其寫成了枚舉,那麼接下來就迎刃而解了。

為了讓大家理解羅馬數是怎麼計數的,這裡我截了一張圖,具體的大家可以自行用微軟Bing搜索。

這裡寫圖片描述

那麼代碼我就先貼出來了:

public class Solution
{
    public string IntToRoman(int num)
    {
        string result = ;
        Type R = typeof(Roman);

        foreach (var r in Enum.GetNames(R).Reverse())
        {
            while (num >= int.Parse(Enum.Format(R, Enum.Parse(R, r), d)))
            {
                result += r.ToString();
                num -= int.Parse(Enum.Format(R, Enum.Parse(R, r), d));
            }
        }
        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
};

今天晚些時候我會將 C# 枚舉的一些用法貼到博客上,不了解的同學敬請關注。

除了枚舉的用法外,我認為這道題中需要你去認真了解這些羅馬數的規則,也就是說記得將9和4這種數也添加到枚舉中哦。

那麼在IntToRoman中都中都在做些什麼呢?

搭配Typetypeof新建出來R

foreach遍歷枚舉中的所有元素

切記要加上Reverse(),至於為什麼,大家試試不加就知道了

如果num比枚舉中的數字大,則將其對應的字符串(比如說”M”)添加到result

最後在num中減掉剛才已經用過的數字,數字也通過枚舉來獲取

最後返回result

好了,到此為止,准備迎接下一題。

下一道題還是關於羅馬數的,不過是從羅馬數轉換成整型數,歡迎大家訪問:傳送門:LeetCode 13 Roman to Integer(羅馬數到整型數) 。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved