在此不再做题目描述。(该题链接:13. 罗马数字转整数 - 力扣(LeetCode))
在观察罗马数字时,我们可以发现计算罗马数字的技巧:
可以设定一个初始值ans = 0,然后对罗马数字从左到右依次遍历字符:
1.若右边字符小于当前字符,则 ans 加上当前字符;
2.若右边字符大于等于当前字符,则 ans 减去当前字符;
然后向右依次执行此操作。
例如:XLIII
X小于L,则ans = 0 - 10 = -10;
L大于I,则ans = -10 + 50 = 40;
I等于I,则ans = 40 + 1 = 41;
I等于I,则ans = 41 + 1 = 42;
I等于I,则ans = 42 + 1 = 43
·代码实现:
class Solution { int numberRoman(String s){ //return时就不用break了 switch (s){ 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; } return 0; }
public int romanToInt(String s) { int ans = 0; for(int i = 0;i<s.length();i++){ int value = numberRoman(String.valueOf(s.charAt(i)));
//charAt( )方法返回指定索引处的char值 if(i < s.length() - 1 &&value < numberRoman(String.valueOf(s.charAt(i + 1)))){ ans = ans - value; } else { ans = ans + value; } } return ans; } }
标签:case,字符,13,return,int,罗马数字,ans,LeetCode,刷题 From: https://www.cnblogs.com/Noob-Green-Hand/p/16919744.html