LeetCode 第十三题 罗马数字转整数
给定一个罗马数字,将其转换成整数。
返回的结果要求在 1 到 3999 的范围内。
Java
public int romanToInt(String s) {
if (s.isEmpty())
return 0;
int sum = 0;
HashMap<Character, Integer> T = new HashMap<>();
T.put('I', 1);
T.put('V', 5);
T.put('X', 10);
T.put('L', 50);
T.put('C', 100);
T.put('D', 500);
T.put('M', 1000);
sum = T.get(s.charAt(s.length() - 1));
for (int i = s.length() - 2; i >= 0; i--) {
if (T.get(s.charAt(i)) < T.get(s.charAt(i + 1)))
sum -= T.get(s.charAt(i));
else
sum += T.get(s.charAt(i));
}
return sum;
}
C++
class Solution
{
public:
int romanToInt(string s)
{
if(s.length()==0)return 0;
map<char,int> T;
T.insert(pair<char,int>('I',1));
T.insert(pair<char,int>('V',5));
T.insert(pair<char,int>('X',10));
T.insert(pair<char,int>('L',50));
T.insert(pair<char,int>('C',100));
T.insert(pair<char,int>('D',500));
T.insert(pair<char,int>('M',1000));
int sum = T[s[s.length()-1]];
for(int i=s.length()-2; i>=0; i--)
{
if(T[s[i]]<T[s[i+1]])
{
sum -= T[s[i]];
}
else
{
sum += T[s[i]];
}
}
return sum;
}
};
python
class Solution(object):
def romanToInt(self, s):
if not s: return 0
dict = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
sum = dict[s[len(s)-1]]
for i in range(len(s)-2, -1, -1):
if(dict[s[i]] < dict[s[i+1]]):
sum = sum - dict[s[i]]
else:
sum = sum + dict[s[i]]
return sum