看到這道題,存在鍵值對,所以先建個泛型字典,把鍵值填進去。 由於這道題存在兩個字元表示一個數字的情況,所以在for迴圈的時候判斷一下,看看當前字元串中迴圈到的字元是否和下一個字元能夠組成存在在字典里的鍵值對,如果能,把值加上,跳過下一個字元進入下下個字元迴圈,如果不能正常匹配就行了 public c ...
看到這道題,存在鍵值對,所以先建個泛型字典,把鍵值填進去。
由於這道題存在兩個字元表示一個數字的情況,所以在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; } }