看到這道題,存在鍵值對,因此先建個泛型字典,把鍵值填進去。blog
因爲這道題存在兩個字符表示一個數字的狀況,因此在for循環的時候判斷一下,看看當前字符串中循環到的字符是否和下一個字符可以組成存在在字典裏的鍵值對,若是能,把值加上,跳過下一個字符進入下下個字符循環,若是不能正常匹配就好了字符串
public class Solution { public int RomanToInt(string s) { Dictionary<string, int> map = new Dictionary<string, int>(); map.Add("I", 1); map.Add("IV", 4); map.Add("V", 5); map.Add("IX", 9); map.Add("X", 10); map.Add("XL", 40); map.Add("L", 50); map.Add("XC", 90); map.Add("C", 100); map.Add("CD", 400); map.Add("D", 500); map.Add("CM", 900); map.Add("M", 1000); int num = 0; for (int i = 0; i < s.Length; i++) { string a = ""; if ((i + 1) < s.Length) { a = s[i].ToString() + s[i + 1].ToString(); } if (map.ContainsKey(a)) { num += map[a]; i++; } else { num += map[s[i].ToString()]; } } return num; } }