簡單-羅馬數(shù)字轉(zhuǎn)整數(shù)

  • 羅馬數(shù)字包含以下七種字符: I乎折, V, X侵歇, L骂澄,C,D 和 M盒至。
字符          數(shù)值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

例如酗洒, 羅馬數(shù)字 2 寫做 II ,即為兩個并列的 1枷遂。12 寫做 XII 樱衷,即為 X + II 。 27 寫做 XXVII, 即為 XX + V + II 酒唉。

通常情況下矩桂,羅馬數(shù)字中小的數(shù)字在大的數(shù)字的右邊。但也存在特例痪伦,例如 4 不寫做 IIII侄榴,而是 IV。數(shù)字 1 在數(shù)字 5 的左邊网沾,所表示的數(shù)等于大數(shù) 5 減小數(shù) 1 得到的數(shù)值 4 癞蚕。同樣地,數(shù)字 9 表示為 IX辉哥。這個特殊的規(guī)則只適用于以下六種情況:

I 可以放在 V (5) 和 X (10) 的左邊桦山,來表示 4 和 9攒射。
X 可以放在 L (50) 和 C (100) 的左邊,來表示 40 和 90恒水。 
C 可以放在 D (500) 和 M (1000) 的左邊会放,來表示 400 和 900。
  • 給定一個羅馬數(shù)字钉凌,將其轉(zhuǎn)換成整數(shù)咧最。輸入確保在 1 到 3999 的范圍內(nèi)。
// 羅馬數(shù)轉(zhuǎn)數(shù)字
func RomanToInt(s string) int {
   var resInt int
   baseMap := make(map[string]int, 7)
   baseMap = map[string]int{"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}

   if len(s) == 1 {
       resInt = int(baseMap[string(s)])
       return resInt
   }
   resSlice := make([]string, 0)
   for i := 0; i < len(s)-1; i++ {
       if baseMap[string(s[i])] < baseMap[string(s[i+1])] {
           resSlice = append(resSlice, string(s[i])+string(s[i+1]))
           i++
       } else {
           resSlice = append(resSlice, string(s[i]))
       }
       if i == len(s)-1-1 {
           resSlice = append(resSlice, string(s[i+1]))
       }
   }

   var tempInt int
   for _, value := range resSlice {
       if len(value) == 1 {
           tempInt = int(baseMap[string(value)])
       } else {
           runes := []rune(value)
           tempInt = int(baseMap[string(runes[1])] - baseMap[string(runes[0])])
       }
       resInt += tempInt
   }

   return resInt
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末御雕,一起剝皮案震驚了整個濱河市矢沿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酸纲,老刑警劉巖咨察,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異福青,居然都是意外死亡摄狱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門无午,熙熙樓的掌柜王于貴愁眉苦臉地迎上來媒役,“玉大人,你說我怎么就攤上這事宪迟『ㄖ裕” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵次泽,是天一觀的道長穿仪。 經(jīng)常有香客問我,道長意荤,這世上最難降的妖魔是什么啊片? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮玖像,結(jié)果婚禮上紫谷,老公的妹妹穿的比我還像新娘。我一直安慰自己捐寥,他們只是感情好笤昨,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著握恳,像睡著了一般瞒窒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乡洼,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天崇裁,我揣著相機與錄音陵像,去河邊找鬼。 笑死寇壳,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的妻怎。 我是一名探鬼主播壳炎,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逼侦!你這毒婦竟也來了匿辩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤榛丢,失蹤者是張志新(化名)和其女友劉穎铲球,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晰赞,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡稼病,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了掖鱼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片然走。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖戏挡,靈堂內(nèi)的尸體忽然破棺而出芍瑞,到底是詐尸還是另有隱情,我是刑警寧澤褐墅,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布拆檬,位于F島的核電站,受9級特大地震影響妥凳,放射性物質(zhì)發(fā)生泄漏竟贯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一逝钥、第九天 我趴在偏房一處隱蔽的房頂上張望澄耍。 院中可真熱鬧,春花似錦晌缘、人聲如沸齐莲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽选酗。三九已至,卻和暖如春岳枷,著一層夾襖步出監(jiān)牢的瞬間芒填,已是汗流浹背呜叫。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留殿衰,地道東北人朱庆。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像闷祥,于是被迫代替她去往敵國和親娱颊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容