看到這道題,存在鍵值對(duì),所以先建個(gè)泛型字典,把鍵值填進(jìn)去。 由于這道題存在兩個(gè)字符表示一個(gè)數(shù)字的情況,所以在for循環(huán)的時(shí)候判斷一下,看看當(dāng)前字符串中循環(huán)到的字符是否和下一個(gè)字符能夠組成存在在字典里的鍵值對(duì),如果能,把值加上,跳過(guò)下一個(gè)字符進(jìn)入下下個(gè)字符循環(huán),如果不能正常匹配就行了 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; } }
|
|
來(lái)自: Coder編程 > 《待分類(lèi)》