版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/little_white__/article/details/82725899
题目:将罗马数字转化为10进制数
C++:
int romanToInt(string s) {
map<char, int> symbol = {
{'I', 1}, {'V', 5}, {'X', 10}, {'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000}
};
int value = 0;
for(int i = s.length() - 1 ; i >= 0 ; i--)
{
if(i - 1 >= 0 && symbol[s.at(i)] > symbol[s.at(i - 1)])
{
value += symbol[s.at(i)] - symbol[s.at(i - 1)];
i --;
continue;
}
value += symbol[s.at(i)];
}
return value;
}
python:
def romanToInt(self, s):
symbol = {"I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000}
value = 0
i = len(s)
while(i >= 0):
i = i - 1
if i < 0:
break;
if (i - 1) >= 0 and symbol[s[i]] > symbol[s[i - 1]]:
value += symbol[s[i]] - symbol[s[i - 1]]
i = i - 1
continue
value += symbol[s[i]]
return value