feat: 刷题roman-to-integer
This commit is contained in:
82
13.roman-to-integer.java
Normal file
82
13.roman-to-integer.java
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
/*
|
||||||
|
* @lc app=leetcode id=13 lang=java
|
||||||
|
*
|
||||||
|
* [13] Roman to Integer
|
||||||
|
*/
|
||||||
|
|
||||||
|
// @lc code=start
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public int romanToInt(String s) {
|
||||||
|
return romanToInt(0, s, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int romanToInt(int c, String s, int i) {
|
||||||
|
if(i == s.length()) {
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
int r;
|
||||||
|
if(i+1 < s.length() && COMBINED_FORMAT_LIST.contains(s.substring(i, i+2))) {
|
||||||
|
r = romanToInt(c+getValue(s.substring(i, i+2)), s, i+2);
|
||||||
|
} else {
|
||||||
|
r = romanToInt(c+getValue(s.substring(i, i+1)), s, i+1);
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getValue(String s) {
|
||||||
|
int r = 0;
|
||||||
|
switch(s) {
|
||||||
|
case "IV":
|
||||||
|
r = 4;
|
||||||
|
break;
|
||||||
|
case "IX":
|
||||||
|
r = 9;
|
||||||
|
break;
|
||||||
|
case "XL":
|
||||||
|
r = 40;
|
||||||
|
break;
|
||||||
|
case "XC":
|
||||||
|
r = 90;
|
||||||
|
break;
|
||||||
|
case "CD":
|
||||||
|
r = 400;
|
||||||
|
break;
|
||||||
|
case "CM":
|
||||||
|
r = 900;
|
||||||
|
break;
|
||||||
|
case "I":
|
||||||
|
r = 1;
|
||||||
|
break;
|
||||||
|
case "V":
|
||||||
|
r = 5;
|
||||||
|
break;
|
||||||
|
case "X":
|
||||||
|
r = 10;
|
||||||
|
break;
|
||||||
|
case "L":
|
||||||
|
r = 50;
|
||||||
|
break;
|
||||||
|
case "C":
|
||||||
|
r = 100;
|
||||||
|
break;
|
||||||
|
case "D":
|
||||||
|
r = 500;
|
||||||
|
break;
|
||||||
|
case "M":
|
||||||
|
r = 1000;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new RuntimeException("invalid expr: "+s);
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final List<String> COMBINED_FORMAT_LIST = Arrays.asList(
|
||||||
|
"IV","IX", "XL", "XC", "CD", "CM"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// @lc code=end
|
||||||
|
|
||||||
Reference in New Issue
Block a user