看了别人答案
1 class Solution { 2 public: 3 int romanToInt(string s) { 4 // Start typing your C/C++ solution below 5 // DO NOT write int main() function 6 map<char, int> S; 7 S['I'] = 1; 8 S['V'] = 5; 9 S['X'] = 10; 10 S['L'] = 50; 11 S['C'] = 100; 12 S['D'] = 500; 13 S['M'] = 1000; 14 int ret = 0; 15 for (int i = 0; i < s.size(); i++) ret += (i>0 && S[s[i]] > S[s[i-1]])? S[s[i]]-2*S[s[i-1]] : S[s[i]]; 16 return ret; 17 } 18 };
C#

1 public class Solution { 2 public int RomanToInt(string s) { 3 Dictionary<char, int> S = new Dictionary<char, int>(); 4 S.Add('I', 1); S.Add('V', 5); S.Add('X', 10); S.Add('L', 50); 5 S.Add('C', 100); S.Add('D', 500); S.Add('M', 1000); 6 int ans = 0; 7 for (int i = 0; i < s.Length; i++) { 8 ans += (i > 0 && S[s[i]] > S[s[i-1]])? S[s[i]]-2*S[s[i-1]] : S[s[i]]; 9 } 10 return ans; 11 } 12 }