13.go 315 B

12345678910111213141516171819202122232425
  1. package main
  2. var mRoman = map[rune]int{
  3. 'I': 1,
  4. 'V': 5,
  5. 'X': 10,
  6. 'L': 50,
  7. 'C': 100,
  8. 'D': 500,
  9. 'M': 1000,
  10. }
  11. func romanToInt(s string) int {
  12. res := 0
  13. last := 1000
  14. for _, v := range s {
  15. // IV --> V - I
  16. if last < mRoman[v] {
  17. res -= 2 * last
  18. }
  19. res += mRoman[v]
  20. last = mRoman[v]
  21. }
  22. return res
  23. }