4.羅馬數(shù)字轉(zhuǎn)整數(shù)-Roman to Integer

LeetCode Link: https://leetcode.com/problems/roman-to-integer/

Description:

羅馬數(shù)字包含以下七種字符: I碉钠, V忿檩, X娩怎, L,C窍育,D 和 M。

Symbol       Value
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)。

Example:

Input: "III"
Output: 3

Input: "IV"
Output: 4

Input: "IX"
Output: 9

Input: "LVIII"
Output: 58
Explanation: L = 50, V= 5, III = 3.

Input: "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.

Tints:

1.羅馬符號轉(zhuǎn)數(shù)字的本質(zhì)是:需要比較左邊和右邊符號代表的數(shù)值的大小口予。如果左邊的大于右邊的娄周,加上左邊的數(shù),如果左邊的小于右邊的沪停,減去左邊的數(shù)煤辨。最后一個符號無法比較裳涛,再加上最后一位。

IV = [1, 5]
num = -1+5 = 4

MCMXCIV = [1000, 100, 1000, 10, 1, 5]
num = +1000-100+1000+10-1+5 = 1994

2.將給定的羅馬字符串map成Int類型的數(shù)組众辨,對于數(shù)組索引值為index的元素端三,再通過比較Array[index]與Array[index+1]的大小決定是加還是減。

Solution:

import Foundation

func romanToInt(_ s: String) -> Int {
    let sArray = s.map { (character) -> Int in
        switch character {
        case "I": return 1
        case "V": return 5
        case "X": return 10
        case "L": return 50
        case "C": return 100
        case "D": return 500
        case "M": return 1000
        default:
            return 0
        }
    }
    
    var num = 0
    var index = 0
    while index < sArray.count - 1 {
        if sArray[index] < sArray[index + 1] {
            num -= sArray[index]
        }else {
            num += sArray[index]
        }
        index += 1
    }
    
    return num + sArray[index]

}

Runtime: 20 ms, faster than 98.79% of Swift online submissions for Roman to Integer.

Memory Usage: 20.4 MB, less than 5.00% of Swift online submissions for Roman to Integer.

Analyze:使用map函數(shù)將一個String轉(zhuǎn)成Int類型的數(shù)組泻轰。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末技肩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子浮声,更是在濱河造成了極大的恐慌虚婿,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泳挥,死亡現(xiàn)場離奇詭異然痊,居然都是意外死亡,警方通過查閱死者的電腦和手機屉符,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門剧浸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人矗钟,你說我怎么就攤上這事唆香。” “怎么了吨艇?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵躬它,是天一觀的道長。 經(jīng)常有香客問我东涡,道長冯吓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任疮跑,我火速辦了婚禮组贺,結果婚禮上,老公的妹妹穿的比我還像新娘祖娘。我一直安慰自己失尖,他們只是感情好,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布渐苏。 她就那樣靜靜地躺著掀潮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪整以。 梳的紋絲不亂的頭發(fā)上胧辽,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天峻仇,我揣著相機與錄音公黑,去河邊找鬼。 笑死,一個胖子當著我的面吹牛凡蚜,可吹牛的內(nèi)容都是我干的人断。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼朝蜘,長吁一口氣:“原來是場噩夢啊……” “哼恶迈!你這毒婦竟也來了?” 一聲冷哼從身側響起谱醇,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤暇仲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后副渴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奈附,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年煮剧,在試婚紗的時候發(fā)現(xiàn)自己被綠了斥滤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡勉盅,死狀恐怖佑颇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情草娜,我是刑警寧澤挑胸,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站驱还,受9級特大地震影響嗜暴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜议蟆,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一闷沥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咐容,春花似錦舆逃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蔚约,卻和暖如春奄妨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背苹祟。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工砸抛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留评雌,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓直焙,卻偏偏與公主長得像景东,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子奔誓,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

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