Проверка римских цифр с помощью регулярного выражения

Опубликовано: 10 Января, 2022

Учитывая строку , и вы должны проверить, является ли данная строка действительной римской цифрой или нет. Если это верно, выведите True, иначе False.

Примечание . Цифры от 1 до 3999.

Примеры:

Ввод: String = IX  
Выход: True 

Ввод: Строка = 54IVC 
Выход: ложь

Рекомендуется: сначала решите эту проблему на «ПРАКТИКЕ», прежде чем переходить к решению.

Римские цифры основаны на приведенных ниже символах.

СИМВОЛ ЗНАЧЕНИЕ
Я 1
IV 4
V 5
IX 9
Х 10
XL 40
L 50
XC 90
С 100
CD 400
D 500
CM 900 
M 1000       

Число римскими цифрами - это последовательность этих символов, записанная в порядке убывания (например, сначала M, затем D и т. Д.). Однако в некоторых конкретных случаях, чтобы избежать последовательного повторения четырех символов (например, IIII или XXXX), вычитательное обозначение часто используется следующим образом:

  • Я поставил перед V или X означает на единицу меньше, поэтому четыре - это IV (один меньше 5), а 9 - IX (один меньше 10).
  • X, помещенный перед L или C, означает на десять меньше, поэтому сорок - это XL (10 меньше, чем 50), а 90 - это XC (десять меньше, чем сто).
  • C перед D или M означает на сто меньше, поэтому четыреста - это CD (сто меньше пятисот), а девятьсот - это CM (сто меньше тысячи).

Approach:

  • The Regular Expression to check if a string is Valid Roman Numeral or not is this:
     ^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$
    

    In which,

    1. M{0,4} specifies the thousands section and basically restrains it to between 0 and 4000
    2. (CM|CD|D?C{0,3}) is for the hundreds section.
    3. (XC|XL|L?X{0,3}) is for the tens place.
    4. Finally, (IX|IV|V?I{0,3}) is the units section.
  • Import regular expression and search the input string in the expression if the string exists return True else return False

Below is the implementation of the above approach.

# Python3 program to Validate the Roman numeral
  
# Function to Validate the Roman numeral
def ValidationOfRomanNumerals(string):
      
    # Importing regular expression
    import re
      
    # Serching the input string in expression and 
    # returning the boolean value
    print(bool(re.search(r"^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$",string)))
  
# Driver code
  
# Given string
string="XI"
  
# Function call
ValidationOfRomanNumerals(string)
Output:
True

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live and Geeks Classes Live USA