Loading

LeetCode刷题笔记—13.罗马数字转整数

在此不再做题目描述。(该题链接: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; } }

 

    

  

posted @ 2022-11-23 20:43  StormArcita  阅读(17)  评论(0)    收藏  举报