知识点:字符串
难度:简单
题目:
示例:
方法:利用字典的方法
Golang:
func romanToInt(s string) int {
//特殊罗马数字
specialRomanStringMap := map[string]int{"IV": 4, "IX": 9, "XL": 40, "XC": 90, "CD": 400, "CM": 900}
//正常罗马数字
romanStringMap := map[string]int{"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}
result := 0
//对字符串循环
for len(s) != 0 {
//当长度大于1的时候,才有必要去特殊罗马数字map中查找
if len(s) > 1 {
//首先我们得拿出两个字符去特殊的map中查找
chars := s[0:2]
//当存在的时候记录值
if v, ok := specialRomanStringMap[chars]; ok {
result += v
s = s[2:]
} else { //不存在的时候去正常map中查找,并记录
result += romanStringMap[string(s[0])]
s = s[1:]
}
} else { //当字符串的长度小于等于1的就只能去正常的罗马数字map中查找
result += romanStringMap[string(s[0])]
s = s[1:]
}
}
return result
}
执行:
复杂度分析:
时间复杂度:O(n)
空间复杂度:O(n)