总结:
1.遇到两种数据类型相互对应的,想到使用map;
2.map在golang中只能用for range遍历
//遇到这种一一对应的,想到用map,字符用byte,字符串用string
var symbolValues = map[byte]int{'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
func romanToInt(s string) (ans int) {
n := len(s)
for i := range s {//map只能用for range遍历
value := symbolValues[s[i]]//symbolValues[s[i]]相当于symbolValues['I']=1.'I'是关键字,1是值
if i < n-1 && value < symbolValues[s[i+1]] {//实现"倒数第二个与倒数第一个比完就不比了"
ans -= value
} else {
ans += value
}
}
return
}