leetcode 羅馬數字與阿拉伯數字互相轉換

2021-10-23 04:33:01 字數 1018 閱讀 3509

羅馬數字包含以下七種字元: i, v, x, l,c,d 和 m。

羅馬數字 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。

核心的思想就是使用貪心演算法,考慮到題目中所說存在左邊的羅馬數字小於右邊的羅馬數字的特殊情況,我們使用乙個雜湊表來存貯所有可能的元組合。然後實行貪心演算法

**如下:

var

inttoroman

=function

(num)

num -= n[0]

res += str[0]

}return res

};

遍歷傳入的字串,但是每次遍歷要往後多看一位,如果當前羅馬字母代表的數字小於下乙個羅馬字母代表的數字,那麼需要作減法之後加到結果上,否則直接加到結果上

**如下:

var

romantoint

=function

(s),

res =

0let arr = s.

split(''

)while

(arr.length >0)

else

}return res

};

羅馬數字 古羅馬數字轉換為阿拉伯數字

題目 古羅馬帝國開創了輝煌的人類文明,但他們的數字表示法的確有些繁瑣,尤其在表示大數的時候,現在看起來簡直不能忍受,所以在現代很少使用了。之所以這樣,不是因為發明表示法的人的智力的問題,而是因為乙個宗教的原因,當時的宗教禁止在數字中出現0的概念!羅馬數字的表示主要依賴以下幾個基本符號 i 1 v 5...

阿拉伯數字轉羅馬數字

最開始想的是當成進製轉,比如說 1 i,2 ii,5 v,6 vi public static string inttoroman1 int num int radix stringbuffer sb new stringbuffer for int i radix.length 1 i 0 i r...

阿拉伯數字轉羅馬數字

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 張老師需要用數字來統計學生們的得分情況,但阿拉伯數字已經不能滿足他的要求了,所以想請你幫忙將學生的成績轉換成羅馬數字。羅馬數字是由七個不同的符號來表示 i...