[LeetCode-Java Exercise] 13. Roman numerals to integers (simple, personally think it is more difficult)

1. Title description

Insert picture description here

2. Problem solving ideas

Putting a small value to the left of a large value is a subtraction, otherwise it is an addition.

In terms of code implementation, you can look back one more bit and compare the size relationship between the current bit and the next bit to determine whether the current bit is an addition or a subtraction. When there is no next digit, just add.
The value of the current bit can also be retained. When traversing to the next bit, compare the relationship between the retained value and the traversed bit, and then determine whether the retained value is plus or minus. The last digit can be added.

3. Code implementation

class Solution {
    
    
    public int romanToInt(String s) {
    
    
        int sum = 0;
        int preNum = getValue(s.charAt(0));
        for(int i = 1;i < s.length(); i ++) {
    
    
            int num = getValue(s.charAt(i));
            if(preNum < num) {
    
    
                sum -= preNum;
            } else {
    
    
                sum += preNum;
            }
            preNum = num;
        }
        sum += preNum;
        return sum;
    }
    
    private int getValue(char ch) {
    
    
        switch(ch) {
    
    
            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;
        }
    }
}

Guess you like

Origin blog.csdn.net/weixin_48683410/article/details/113406733