Roman numerals to integers

前端 未结 14 936
不思量自难忘°
不思量自难忘° 2020-12-05 20:56

I have a transfer with products that unfortunately has to get matched by product name. The biggest issue here is I might get duplicate products on account of roman numbers.

14条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-05 21:21

    This is my solution

    public int SimplerConverter(string number)
        {
            number = number.ToUpper();
            var result = 0;
    
            foreach (var letter in number)
            {
                result += ConvertLetterToNumber(letter);
            }
    
            if (number.Contains("IV")|| number.Contains("IX"))
                result -= 2;
    
            if (number.Contains("XL")|| number.Contains("XC"))
                result -= 20;
    
            if (number.Contains("CD")|| number.Contains("CM"))
                result -= 200;
    
    
            return result;
    
    
    
        }
    
        private int ConvertLetterToNumber(char letter)
        {
            switch (letter)
            {
                case 'M':
                {
                    return 1000;
                }
    
                case 'D':
                {
                    return 500;
                }
    
                case 'C':
                {
                    return 100;
                }
    
                case 'L':
                {
                    return 50;
                }
    
                case 'X':
                {
                    return 10;
                }
    
                case 'V':
                {
                    return 5;
                }
    
                case 'I':
                {
                    return 1;
                }
    
                default:
                {
                    throw new ArgumentException("Ivalid charakter");
                }
    
    
    
            }
    
        }
    

提交回复
热议问题