【6】罗马数字转整数
2021-01-03 本文已影响0人
公孙剑人
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/roman-to-integer
题目
思路
刚看到题目,没有合适的思路,脑子里面出现各种if...else。。翻了下力扣的解答,看到一句话:“前面的数字大,做加法;前面的数字小,做减法”,茅塞顿开,马上开始写代码,然鹅并没有写出来。。
看来自以为理解了本质,其实跟事实仍然存在很大差距,同志仍需努力哇🐶
代码
public int romanToInt(String s) {
int result = 0;
int pre = getValue(s.charAt(0));
for (int i = 1; i < s.length(); ++i) {
int curr = getValue(s.charAt(i));
if (pre < curr) {
result -= pre;
} else {
result += pre;
}
pre = curr;
}
result += pre;
return result;
}
public int getValue(char c) {
switch(c) {
case 'I':
return 1;
case 'V':
return 5;
case 'X':
return 10;
case 'L':
return 50;
case 'C':
return 100;
case 'D':
return 500;
case 'M':
return 1000;
default:
return 0;
}
}