13. 罗马数字转整数
1 class Solution 2 { 3 private: 4 unordered_map<string,int> hash = {{"I",1},{"IV",4},{"V",5},{"IX",9},{"X",10}, 5 {"XL",40},{"L",50},{"XC",90},{"C",100},{"CD",400}, 6 {"D",500},{"CM",900},{"M",1000}}; 7 public: 8 //用到了贪心的思想 9 int romanToInt(string s) 10 { 11 int i = 0; 12 int res = 0; 13 while(i < s.size()) 14 { 15 if(i + 1 < s.size() && hash.count(s.substr(i,2)))//1、先试探两个字符的字符串 16 { 17 res += hash[s.substr(i,2)]; 18 i += 2; 19 } 20 else if(i < s.size() && hash.count(s.substr(i,1)))//2、再试探一个字符的字符串 21 { 22 res += hash[s.substr(i,1)]; 23 i += 1; 24 } 25 } 26 return res; 27 } 28 };
Mamba never out

浙公网安备 33010602011771号