当前位置:网站首页>[LeetCode]13. Roman numerals to integers thirty

[LeetCode]13. Roman numerals to integers thirty

2022-06-13 00:12:00 PowerDon

Roman numerals contain the following seven characters : I, V, X, L,C,D  and  M.

character The number
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
for example , Rome digital 2 Write to do  II , Two parallel 1.12 Write to do  XII , That is to say  X + II . 27 Write to do   XXVII, That is to say  XX + V + II .

Usually , The small numbers in roman numbers are to the right of the big ones . But there are special cases , for example 4 Do not write  IIII, It is  IV. Numbers 1 In number 5 Left side , The number represented is equal to the large number 5 Decimal reduction 1 Value obtained 4 . similarly , Numbers 9 Expressed as  IX. This special rule only applies to the following six cases :

  • I  Can be placed in  V (5) and  X (10) Left side , To express 4 and 9.
  • X  Can be placed in  L (50) and  C (100) Left side , To express 40 and  90.
  • C  Can be placed in  D (500) and  M (1000) Left side , To express  400 and  900.
    Given a Roman number , Convert it to an integer . Input to ensure 1  To 3999 Within the scope of .

Example  1:

Input : “III”
Output : 3
Example  2:

Input : “IV”
Output : 4
Example  3:

Input : “IX”
Output : 9
Example  4:

Input : “LVIII”
Output : 58
explain : L = 50, V= 5, III = 3.
Example  5:

Input : “MCMXCIV”
Output : 1994
explain : M = 1000, CM = 900, XC = 90, IV = 4.

source : Power button (LeetCode)
link :https://leetcode-cn.com/problems/roman-to-integer
Copyright belongs to the network . For commercial reprint, please contact the official authority , Non-commercial reprint please indicate the source .

public class Solution {
    
    public int RomanToInt(string s) {
    
        int[] RomanNums = new int[128];
        RomanNums['I'] = 1;
        RomanNums['V'] = 5;
        RomanNums['X'] = 10;
        RomanNums['L'] = 50;
        RomanNums['C'] = 100;
        RomanNums['D'] = 500;
        RomanNums['M'] = 1000;

        char[] Romans = s.ToCharArray();
        int result = 0;
        for(int i = 0; i < Romans.Length; i++){
    
            if(i < Romans.Length-1){
    
                if(RomanNums[Romans[i]] < RomanNums[Romans[i+1]]){
    
                    result -= RomanNums[Romans[i]];
                }else{
    
                    result += RomanNums[Romans[i]];
                }
            }else{
    
                result += RomanNums[Romans[i]];
            }  
        }

        return result;
    }
}
原网站

版权声明
本文为[PowerDon]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202280602300532.html