class Solution {
public:
int romanToInt(string s) {
//哈希表,查询一次时间复杂度是O(1)
unordered_map<string,int> m={{"I",1},{"V",5},{"X",10},{"L",50},{"C",100},
{"D",500},{"M",1000},{"IV",4},{"IX",9},
{"XL",40},{"XC",90},{"CD",400},{"CM",900}};
int alb=0;
int len = s.size();
if(len==1)
return m[s];
//遍历字符串,先判断是否有两个字符代表数字的情况
for(int i=0;i<len-1;i++)
{
string one=s.substr(i,1);
string two=s.substr(i,2);
if(m[two])
{
alb=alb+m[two];
i++;
}else{
alb=alb+m[one];
}
}
string two=s.substr(len-2,2);
if(!m[two])
alb=alb+m[s.substr(len-1,1)];
return alb;
}
};
Roman to Integer
最新推荐文章于 2022-03-18 20:30:12 发布