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 };

 

posted @ 2020-03-15 18:25  Jinxiaobo0509  阅读(108)  评论(0)    收藏  举报