-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path13_roman_to_integer.swift
67 lines (65 loc) · 2.07 KB
/
13_roman_to_integer.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
class Solution {
func romanToInt(_ s: String) -> Int {
var count = 0
let letters = Array(s)
var i = 0
while i < letters.count {
switch letters[i] {
case "I":
// check next
if i != letters.count-1 {
if letters[i+1] == "V" {
count += 4
i += 2
continue
} else if letters[i+1] == "X" {
count += 9
i += 2
continue
}
}
count += 1
case "V":
count += 5
case "X":
// check next
if i != letters.count-1 {
if letters[i+1] == "L" {
count += 40
i += 2
continue
} else if letters[i+1] == "C" {
count += 90
i += 2
continue
}
}
count += 10
case "L":
count += 50
case "C":
// check next
if i != letters.count-1 {
if letters[i+1] == "D" {
count += 400
i += 2
continue
} else if letters[i+1] == "M" {
count += 900
i += 2
continue
}
}
count += 100
case "D":
count += 500
case "M":
count += 1000
default:
print("sth wrong")
}
i += 1
}
return count
}
}